https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94884
--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Part of this is: bool f1_part0(unsigned x, unsigned y) { unsigned t1 = x; unsigned t = (x | y); return t >= t1; } Should be optimized to true.