/* { dg-do run } */ __attribute__((noinline, noclone)) void bar (int *b) { b[0] = b[1] = b[2] = 1; } __attribute__((noinline, noclone)) int baz (int x) { if (x != 1) __builtin_abort (); } void foo (int x) { if (x == 0) { int *b = __builtin_malloc (3 * sizeof (int)); while (b[0]) ; } else if (x == 1) { int i, j; int *b = __builtin_malloc (3 * sizeof (int)); for (i = 0; i < 2; i++) { bar (b); for (j = 0; j < 3; ++j) baz (b[j]); baz (b[0]); } } } int main () { int x = 1; asm volatile ("" : "+r" (x)); foo (x); return 0; }