/* { dg-do run } */ /* { dg-options "-fipa-pta" } */ typedef unsigned long ulong; int __attribute__((noinline, noclone)) f4 (int a, int b, int c, int d, int e) { return a + b + c + d + e; } void __attribute__((noinline, noclone)) f3 (int *p) { *p = f4(1, 2, 3, 4, 5); } void __attribute__((noinline, noclone)) f2 () { int unused; f3 (&unused); } void __attribute__((noinline, noclone)) f1 (ulong e, ulong f) { if (e > 5 || f > 5) __builtin_abort(); f2 (); } int main() { ulong e, f; for (e = 5; e > 0; e--) for (f = 5; f > 0; f--) f1(e, f); return 0; }