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))
       9  stuff (int i)
      10  {
      11    global = i;
      12  }
      13  
      14  static void hooray ()
      15  {
      16    stuff (1);
      17  }
      18  
      19  static void hiphip (void (*f)())
      20  {
      21    stuff (2);
      22    f ();
      23  }
      24  
      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"  } } */