http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47964
--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> 2011-03-03 10:17:45 UTC --- bool foo (unsigned int a0) { return a0 < 1000001U || ~a0 < 1000001U; } int main () { __builtin_printf ("%d\n", (int) foo (1)); } certainly prints one, not 0.