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

--- Comment #12 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(In reply to Jeffrey A. Law from comment #11)
> Andrew.  You're missing the point.  This scenario isn't the kind of thing
> that reload and LRA are supposed to fix.  They fix constraint problems.  ie,
> I got the wrong kind of register (wrong register file), or I can't really
> handlea  constant, so reload the value into a register, etc.
> 
> We have a pseudo live across a call and IRA allocates that pseudo to a call
> clobbered hard register.  That's an IRA bug in my book.

Then it is wrong even for aarch64 which allocates r1 to the pseduo case:
      Popping a3(r109,l0)  --         assign reg 1

I am trying to point out that it looks like LRA can fix this up (reload can do
it too in some but not all cases as shown by this bug). I do think it is wrong
at least for a missed optimization case where we need now to spill the register
to the stack across the call.

I see -fno-caller-saves fixes it too.

Reply via email to