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

--- Comment #11 from amker at gcc dot gnu.org ---
(In reply to Ilya Enkovich from comment #10)
> (In reply to amker from comment #9)
> > I know little about x86, is it because of generation of non-canonical rtl
> > expression after this change?
> > 
> > Another question for this case is: Is it because operand ordering that
> > inv_can_prop_to_addr_use failed to verify the result insn as a valid one? 
> > If so, is it because of non-canonical rtl expressions?
> 
> In i386 address expression only the first operand of PLUS may be another
> PLUS.  Thus (r1 + r2) + CONST is a valid address but r1 + (r2 + CONST) is
> not.  Thus when you propagate a register you may need to reorder operands.

I see, I will check what combine does here.  Maybe it's just an overlook in
inv_can_prop_to_addr_use, which reminds me if other targets like AArch64 are
also affected.

Thanks.

Reply via email to