1/* Verify that simple indirect calls are inlined even without early
2   inlining..  */
3/* { dg-do compile } */
4/* { dg-options "-O3 -c -fdump-ipa-inline -fno-early-inlining"  } */
5
6extern void non_existent(int);
7extern void non_existent(int);
8
9static void hooray ()
10{
11  non_existent (1);
12}
13
14static void  __attribute__ ((noinline)) hiphip (void (*f)())
15{
16  f ();
17}
18
19int __attribute__ ((noinline,noclone)) get_input(void)
20{
21  return 1;
22}
23
24int main (int argc, int *argv[])
25{
26  int i;
27
28  for (i = 0; i < get_input (); i++)
29    hiphip (hooray);
30  return 0;
31}
32
33/* { dg-final { scan-ipa-dump "hooray\[^\\n\]*inline copy in hiphip.constprop"  "inline"  } } */
34/* { dg-final { cleanup-ipa-dump "inline" } } */
35