https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69416
--- Comment #3 from Richard Henderson <rth at gcc dot gnu.org> --- (In reply to Wilco from comment #2) > It doesn't list the substitution before simplification, but it should be: > > (set (reg:SI 465) > (gtu:SI > (if_then_else:CC (ne (reg:SI 1002 [ ref_309(D)->codeD.85066 ]) > (const_int 47 [0x2f])) > (compare:CC (const_int 29 [0x1d]) (const_int 1 [0x1])) > (const_int 8 [0x8]))) > (const_int 0 [0]))) > > I don't see how it could simplify this unless it constant evaluates both the > then and else (despite CCmode type being special and needing extra care) and > decides they are both true, so the if-condition doesn't matter at all... Combine's behaviour with CCmode is suspect, but I guess that the ELSE portion of the inner IF needs more than a bare const_int. I would write this as (unspec:CC [(const_int 8)] UNSPEC_NZCV).