https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96298
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |segher at gcc dot gnu.org --- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- -fdisable-rtl-combine fixes it. In the end it elides an xor, but it prints many matches so not sure what goes on. Likely an issue in some simplify-rtx thing. @@ -175,15 +1453,7 @@ (expr_list:REG_EQUAL (plus:DI (reg:DI 85 [ _10 ]) (const_int 9187201950435737471 [0x7f7f7f7f7f7f7f7f])) (nil))))) -(insn 14 13 17 2 (parallel [ - (set (reg:DI 108) - (xor:DI (reg:DI 106) - (reg:DI 86 [ _12 ]))) - (clobber (reg:CC 17 flags)) - ]) "t.c":8:18 521 {*xordi_1} - (expr_list:REG_DEAD (reg:DI 106) - (expr_list:REG_UNUSED (reg:CC 17 flags) - (nil)))) +(note 14 13 17 2 NOTE_INSN_DELETED) (insn 17 14 18 2 (parallel [ (set (reg:DI 110) (minus:DI (reg:DI 105) @@ -199,22 +1469,22 @@ (insn 18 17 20 2 (parallel [ (set (reg:DI 112) (xor:DI (reg:DI 110) - (reg:DI 86 [ _12 ]))) + (reg:DI 106))) (clobber (reg:CC 17 flags)) ]) "t.c":8:25 521 {*xordi_1} - (expr_list:REG_DEAD (reg:DI 110) - (expr_list:REG_DEAD (reg:DI 86 [ _12 ]) - (expr_list:REG_UNUSED (reg:CC 17 flags) + (expr_list:REG_UNUSED (reg:CC 17 flags) + (expr_list:REG_DEAD (reg:DI 106) + (expr_list:REG_DEAD (reg:DI 110) (nil))))) (insn 20 18 21 2 (parallel [ (set (reg:DI 114) - (xor:DI (reg:DI 108) - (reg:DI 112))) + (xor:DI (reg:DI 112) + (reg:DI 86 [ _12 ]))) (clobber (reg:CC 17 flags)) ]) "t.c":8:23 521 {*xordi_1} - (expr_list:REG_DEAD (reg:DI 112) - (expr_list:REG_DEAD (reg:DI 108) - (expr_list:REG_UNUSED (reg:CC 17 flags) + (expr_list:REG_DEAD (reg:DI 86 [ _12 ]) + (expr_list:REG_UNUSED (reg:CC 17 flags) + (expr_list:REG_DEAD (reg:DI 112) (nil)))))