https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108354
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Assignee|unassigned at gcc dot gnu.org |pinskia at gcc dot gnu.org Status|NEW |ASSIGNED Depends on| |96921 --- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Looks like: _4 = (int) _2; ... i.1_15 = (unsigned short) _2; _16 = 1 - i.1_15; _6 = (int) _16; ... _8 = _4 | _6; Simplify to just _4 = (int) _2; ... _t = _2 ^ 1; _6 = (int)_t; ... _8 = _4 | _6; Which then simplifies down to: _8 = 1; (because (_2 ^ 1) | (_2) == 1) Which then would be optimized. Let me look. Referenced Bugs: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96921 [Bug 96921] Failure to optimize combined boolean not patterns