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

Reply via email to