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