https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110293
--- Comment #9 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Actually here is the rest for the non-zero comparisons. Note for the below case, s can be swapped around with unsigned and the CST comparisons become unsigned comparisons too. s < (s == CST) -> CST == 0 ? s <= 0 : CST < 0 s >= (s == CST) -> CST == 0 ? s > 0 : CST > 0 s > (s == CST) -> CST == 0 ? s <= 0 : CST > 1 s <= (s == CST) -> CST == 0 ? s > 0 : CST <= 1 s < (s != CST) -> CST == 0 ? s < 0 : (CST > 0 ? s < 1 : (s < 1 & s != CST)) s >= (s != CST) -> CST == 0 ? s >= 0 : (CST == 1 ? s > 1 : (CST > 1 ? s != CST & s >= 1 : s >= 1)) s > (s != CST) -> CST == 0 ? s <= 1 : s <= (s != CST) -> CST == 0 ? s > 1 :