https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104196
--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Started with r12-4790-g4b3a325f07acebf47e82de227ce1d5ba62f5bcae Slightly adjusted testcase: int a = 6; int main () { while (1) { int b = a < 0 && 0 < -__INT_MAX__ - a ? 0 : a; if (b != 4096 - __INT_MAX__) { if (a < 6) __builtin_abort (); break; } } return 0; }