https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114190
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- So after reload, it looks ok: (insn 22 21 380 2 (set (reg:CCZ 17 flags) (compare:CCZ (reg:SI 4 si [orig:111 _21+4 ] [111]) (const_int 0 [0]))) "/app/example.cpp":8:8 discrim 1 7 {*cmpsi_ccno_1} (nil)) (insn 380 22 381 2 (parallel [ (set (reg:DI 1 dx [353]) (plus:DI (reg/f:DI 7 sp) (const_int 212 [0xd4]))) (clobber (reg:CC 17 flags)) ]) "/app/example.cpp":8:65 discrim 1 272 {*adddi_1} (expr_list:REG_EQUIV (plus:DI (reg/f:DI 16 argp) (const_int 76 [0x4c])) (nil))) (insn 381 380 466 2 (set (reg:CCZ 17 flags) (compare:CCZ (reg:SI 4 si [orig:111 _21+4 ] [111]) (const_int 0 [0]))) "/app/example.cpp":8:65 discrim 1 7 {*cmpsi_ccno_1} (nil)) Note without -fno-dce, `insn 22` is not in the IR and that is the only difference so far. THis is ok at this point.