1 /* Verify that indirect inlining can also remove references of the functions it
2    discovers calls for.  */
3 /* { dg-do compile } */
4 /* { dg-options "-O3 -fno-early-inlining -fno-ipa-cp -fdump-ipa-inline -fdump-tree-optimized"  } */
5 
6 int global;
7 
8 void __attribute__ ((noinline, noclone, used))
stuff(int i)9 stuff (int i)
10 {
11   global = i;
12 }
13 
hooray()14 static void hooray ()
15 {
16   stuff (1);
17 }
18 
hiphip(void (* f)())19 static void hiphip (void (*f)())
20 {
21   stuff (2);
22   f ();
23 }
24 
main(void)25 int main (void)
26 {
27   hiphip (hooray);
28   return 0;
29 }
30 
31 /* { dg-final { scan-ipa-dump "ipa-prop: Removed a reference"  "inline"  } } */
32 /* { dg-final { scan-tree-dump-not "hooray"  "optimized"  } } */
33