https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108997
--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (In reply to Nikita Kniazev from comment #3) > For cond == 789 > if (cond_2(D) == 789) > goto <bb 3>; [20.24%] > else > goto <bb 4>; [79.76%] > > For cond != 789 > if (cond_2(D) != 789) > goto <bb 3>; [48.88%] > else > goto <bb 4>; [51.12%] an intergal type equaling a specific # is handled this way on purpose. Bool should be handled differently because it only has two values, 0/1. Anyways != is not handled specially except for the zero value case ...