https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123853
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Target| |m68k-*-*
Component|rtl-optimization |target
Host|m68k-*-* |
--- Comment #9 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(In reply to Andreas Schwab from comment #8)
> Before late_combine2:
>
> (insn 67 64 69 12 (set (reg/f:SI 11 %a3 [orig:53 _30 ] [53])
> (plus:SI (reg:SI 9 %a1 [orig:87 ivtmp.24 ] [87])
> (reg:SI 0 %d0 [orig:109 _98 ] [109]))) "obstack.i":79:23 150
> {*addsi3_internal}
> (nil))
> (insn 70 69 72 12 (set (mem:SI (reg/f:SI 11 %a3 [orig:53 _30 ] [53]) [6
> *_30+0 S4 A16])
> (mem:SI (pre_dec:SI (reg:SI 9 %a1 [orig:87 ivtmp.24 ] [87])) [6
> MEM[(int *)_115]+0 S4 A16])) "obstack.i":80:4 55 {*movsi_m68k2}
> (expr_list:REG_INC (reg:SI 9 %a1 [orig:87 ivtmp.24 ] [87])
> (nil)))
>
> After late_combine2:
>
> (insn 70 69 72 12 (set (mem:SI (plus:SI (reg:SI 9 %a1 [orig:87 ivtmp.24 ]
> [87])
> (reg:SI 0 %d0 [orig:109 _98 ] [109])) [6 *_30+0 S4 A16])
> (mem:SI (pre_dec:SI (reg:SI 9 %a1 [orig:87 ivtmp.24 ] [87])) [6
> MEM[(int *)_115]+0 S4 A16])) "obstack.i":80:4 54 {*movsi_m68k}
> (expr_list:REG_INC (reg:SI 9 %a1 [orig:87 ivtmp.24 ] [87])
> (nil)))
>From the documentation:
```
If a register used as the operand of these expressions is used in
another address in an insn, ___the original value of the register is used___.
Uses of the register outside of an address are not permitted within the
same insn as a use in an embedded side effect expression because such
insns behave differently on different machines and hence must be treated
as ambiguous and disallowed.
```
So back to m68k backend I think.