https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69052
--- Comment #10 from Ilya Enkovich <ienkovich at gcc dot gnu.org> --- (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.