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

--- Comment #6 from Stefan Schulze Frielinghaus <stefansf at gcc dot gnu.org> 
---
(In reply to Robin Dapp from comment #4)
> As we deleted r244's definition (insn 11) the following reload
> 
>       Creating newreg=251 from oldreg=244, assigning class GR_REGS to r251
>     Inserting insn reload before:
>   165: r251:DI=r244:DI
> 
> doesn't make sense because the spill slot is uninitialized.
> 
> So when deleting insn 11 we assume that all uses will be replaced.  The way
> it's written, I suppose that's a basic assumption of lra.

My current understanding is that insns which initialize pseudos which have an
equivalence are basically always removed.  In order to compensate for the case
that an equivalence substitution fails, reloads are introduced.  So in that
light insn 165 fits my mental model.  However, my model is smashed to peaces
right afterwards since I had expected that during Local #2 equivalences are
again applied and I would have expected that r244 in insn 165 is substituted
with frame.  Maybe there is some glue missing after skipping an equiv
substitution as done in r16-7891 and rescheduling equiv subst (just a wild
guess)?

Reply via email to