https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101188
--- Comment #5 from Georg-Johann Lay <gjl at gcc dot gnu.org> --- It happens in postreload.cc::reload_cse_move2add() when (insn 45 16 17 2 (set (reg/f:HI 30 r30 [60]) (reg/v/f:HI 16 r16 [orig:51 self ] [51])) "fail1.c":29:9 101 {*movhi_split} (nil)) (insn 17 45 18 2 (parallel [ (set (reg/f:HI 30 r30 [60]) (plus:HI (reg/f:HI 30 r30 [60]) (const_int 66 [0x42]))) (clobber (scratch:QI)) ]) "fail1.c":29:9 175 {addhi3_clobber} (nil)) is transformed to: (insn 17 16 18 2 (set (reg/f:HI 30 r30 [60]) (plus:HI (reg/f:HI 30 r30 [60]) (const_int 2 [0x2]))) "fail1.c":29:9 165 {*addhi3_split} (nil)) The wrong setting of "success" is in postreload.cc:2028 as of the following, so the condition that leads to there is bogus. https://gcc.gnu.org/git/?p=gcc.git;a=blame;f=gcc/postreload.cc;h=fb392651e1b6a60e12bf3d36bc302bf9be8bc608;hb=03c7c418baa01f0642817bc9b44192d134102aa9#l2028