https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77289
Segher Boessenkool <segher at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |segher at gcc dot gnu.org --- Comment #2 from Segher Boessenkool <segher at gcc dot gnu.org> --- It already goes wrong at IRA: (insn 77 79 71 3 (parallel [ (set (reg:SF 33 1) (mem:SF (plus:SI (reg/f:SI 113 sfp) (const_int 8 [0x8])) [1 MEM[base: _17, offset: 0B]+0 S4 A32])) (set (reg:SI 208 [ ivtmp.6 ]) (plus:SI (reg/f:SI 113 sfp) (const_int 8 [0x8]))) ]) 77289.c:9 617 {*movsf_update1} (nil)) where 208 is assigned r31: 19:r206 l0 29 1:r208 l0 31 2:r209 l0 30 18:r247 l0 75 but the pattern is (define_insn "*movsf_update1" [(set (match_operand:SF 3 "gpc_reg_operand" "=f,f") (mem:SF (plus:SI (match_operand:SI 1 "gpc_reg_operand" "0,0") (match_operand:SI 2 "reg_or_short_operand" "r,I")))) (set (match_operand:SI 0 "gpc_reg_operand" "=b,b") (plus:SI (match_dup 1) (match_dup 2)))] so operand 1 is not the same as operand 0.