https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119291
--- Comment #13 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Adjusted testcase so that it doesn't need to use __builtin_exit: int a; long c; __attribute__((noipa)) void foo (int x) { if (x != 0) __builtin_abort (); a = 42; } int main () { int e = 1; lab: if (a < 2) { int b = e; _Bool d = a != 0; _Bool f = b != 0; unsigned long g = -(d & f); unsigned long h = c & g; unsigned long i = ~c; e = -(i & h); c = e != 0; a = ~e + b; foo (e); goto lab; } } This regressed (with -O2 -Dnoipa=noinline,noclone for older compilers) with r9-3763-gef976be1a23a5171082cf1a569d00573013a175c