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