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.