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...