https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60818
--- Comment #22 from Segher Boessenkool <segher at gcc dot gnu.org> --- The combination that makes it die is: Trying 18, 17 -> 19: Successfully matched this instruction: (set (reg:CC 176) (reg:CC 164)) Where insn 18 is (set (reg:SI 174) (gt:SI (reg:CC 164) (const_int 0 [0]))) and insn 17 is (set (reg:SI 173) (lt:SI (reg:CC 164) (const_int 0 [0]))) and insn 19 is (insn 19 18 22 2 (set (reg:CCUNS 176) (compare:CCUNS (reg:SI 173) (reg:SI 174))) "60818-19.c":4 772 {*cmpsi_unsigned} (expr_list:REG_DEAD (reg:SI 174) (expr_list:REG_DEAD (reg:SI 173) (nil)))) the combined insn should not simply copy the CC (it needs to swap the greater-than and smaller-than results), and it needs to return a CCUNS anyway. Where did this come from...