(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
tree-prof/
indir-call-prof-2.c
       1  /* { dg-options "-O2 -fno-early-inlining -fdump-ipa-profile-optimized -fdump-ipa-afdo-optimized" } */
       2  volatile int one;
       3  static int
       4  add1 (int val)
       5  {
       6    return val += one;
       7  }
       8  
       9  static int
      10  sub1 (int val)
      11  {
      12    return val -= one;
      13  }
      14  
      15  static int
      16  do_op (int val, int (*fnptr) (int))
      17  {
      18    return fnptr (val);
      19  }
      20  
      21  int
      22  main (void)
      23  {
      24    int i, val = 0;
      25    for (i = 0; i < 10000000; i++)
      26      {
      27        val = do_op (val, add1);
      28        val = do_op (val, sub1);
      29      }
      30    return val;
      31  }
      32  /* { dg-final-use-not-autofdo { scan-ipa-dump "Indirect call -> direct call.* add1 .will resolve by ipa-profile" "profile"} } */
      33  /* { dg-final-use-not-autofdo { scan-ipa-dump "Indirect call -> direct call.* sub1 .will resolve by ipa-profile" "profile"} } */
      34  /* { dg-final-use-autofdo { scan-ipa-dump "Inlining add1/1 into main/4." "afdo"} } */
      35  /* { dg-final-use-autofdo { scan-ipa-dump "Inlining sub1/2 into main/4." "afdo"} } */