https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110539
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |ASSIGNED Ever confirmed|0 |1 Assignee|unassigned at gcc dot gnu.org |pinskia at gcc dot gnu.org Last reconfirmed| |2023-07-06 --- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- # RANGE [irange] int [0, 1] NONZERO 0x1 i_7 = a.0_1 & 1; _17 = i_7 != 0; _12 = (int) _17; if (i_7 == _12) So this should have been optimized to _17 = (bool) i_7; and then if (1) Maybe it is an order of the stuff in match.pd ...