1 /* Verify that call declarations are not redirected according to indirect
2    inlining edges too early.  */
3 /* { dg-do run } */
4 /* { dg-options "-O3 -fno-early-inlining"  } */
5 
6 extern void abort (void);
7 
bar(int k)8 int bar (int k)
9 {
10   return k+2;
11 }
12 
baz(int k)13 int baz (int k)
14 {
15   return k+1;
16 }
17 
foo(int (* p)(int),int i)18 static int foo (int (*p)(int), int i)
19 {
20   return p (i+1);
21 }
22 
23 int (*g)(int) = baz;
24 
main(int argc,char * argv[])25 int main (int argc, char *argv[])
26 {
27   if (foo (bar, 0) != 3)
28     abort ();
29   if (foo (g, 1) != 3)
30     abort ();
31 
32   return 0;
33 }
34