https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115458

--- Comment #15 from Jeffrey A. Law <law at gcc dot gnu.org> ---
I was concerned about that hardreg usage as well.  It's from argument setup.  I
did an experiment around that, essentially reporting that vector regs were
always likely to be spilled.

That prevents us from using the hard register in a complex insn and (as
expected) the complex insn sets a pseudo which is then copied into the
appropriate hard reg.   It all looked quite sensible, but it didn't change the
failure mode.

Don't get me wrong, argument passing is part of the triggering prereqs,
essentially the uses as argument registers crank up the register pressure at
the key point.  A single one of these grouped registers can be live at this
point and LRA should be able to handle it (by tying one of the inputs to one of
the outputs).  If two register groups are live and unspillable, then there
won't be any valid path for reloading.  That's esentially the thread to pull on
today.

I'm not a fan of the whole LMUL concept.  But it is what it is :(

Reply via email to