https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107190
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Component|rtl-optimization |middle-end --- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- I think it is the expansion of the add with overflow causing things to be worse. (insn 16 15 17 (set (reg:DI 102 [ _17+8 ]) (const_int 0 [0])) -1 (nil)) (insn 17 16 18 (parallel [ (set (reg:CC_C 66 cc) (compare:CC_C (plus:DI (reg:DI 109 [ m ]) (reg:DI 111 [ m1 ])) (reg:DI 109 [ m ]))) (set (reg:DI 112) (plus:DI (reg:DI 109 [ m ]) (reg:DI 111 [ m1 ]))) ]) -1 (nil)) (jump_insn 18 17 19 (set (pc) (if_then_else (ltu (reg:CC_C 66 cc) (const_int 0 [0])) (label_ref 21) (pc))) -1 (int_list:REG_BR_PROB 536868 (nil))) (jump_insn 19 18 20 (set (pc) (label_ref 23)) -1 (nil)) (barrier 20 19 21) (code_label 21 20 22 3 (nil) [0 uses]) (insn 22 21 23 (set (reg:DI 102 [ _17+8 ]) (const_int 1 [0x1])) -1 (nil)) (code_label 23 22 24 2 (nil) [0 uses]) I don't see why we need to expand to a jump here rather than a cset? I think there is another bug about this already too.