https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94893
--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Note we also don't optimize: inline int sign1(int x) { return (x < 0 ? -1 : 0) | (x > 0 ? 1 : 0); } bool f1(int x) { return sign1(x) < 1; } To be just `x <= 0`