https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104645
--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- So it's unhandled <bb 2> : if (i_3(D) != 0) goto <bb 3>; [INV] else goto <bb 4>; [INV] <bb 3> : _4 = i_3(D) & 1; iftmp.0_5 = (int) _4; <bb 4> : # iftmp.0_2 = PHI <iftmp.0_5(3), 0(2)> return iftmp.0_2; it also doesn't handle <bb 2> : if (i_3(D) != 0) goto <bb 3>; [INV] else goto <bb 4>; [INV] <bb 3> : i.1_1 = (int) i_3(D); iftmp.0_5 = i.1_1 & 1; <bb 4> : # iftmp.0_2 = PHI <iftmp.0_5(3), 0(2)> return iftmp.0_2; I wonder if we can't cook up a fix for GCC 12 though since it _is_ a regression after all. Just look through (nop-)conversions somehow.