https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113072
--- Comment #5 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (In reply to Andrew Pinski from comment #2) > Looks like bool sometimes produces != or ^ :) > ``` > bool foo(bool a, int b) > { > bool b1 = b == 1; > bool b2 = !b1; > bool c = (a ^ b1); > return c & (a ^ b2); > } > ``` > Though that is PR 111149 . I filed a related testcase to the above as PR 113186 but it does not handle the above I think.