(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
ipa/
ipa-icf-31.c
       1  /* { dg-do run } */
       2  /* { dg-options "-O2 -fipa-icf" } */
       3  
       4  __attribute__ ((noinline, noclone))
       5  int f1 (int x, int (*p1) (void), int (*p2) (void))
       6  {
       7    if (x)
       8      return p1 ();
       9    else
      10      return p2 ();
      11  }
      12  
      13  __attribute__ ((noinline, noclone))
      14  int f2 (int x, int (*p1) (void), int (*p2) (void))
      15  {
      16    if (x)
      17      return p2 ();
      18    else
      19      return p1 ();
      20  }
      21  
      22  __attribute__ ((noinline, noclone))
      23  int f3 (void)
      24  {
      25    return 1;
      26  }
      27  
      28  __attribute__ ((noinline, noclone))
      29  int f4 (void)
      30  {
      31    return 2;
      32  }
      33  
      34  int
      35  main ()
      36  {
      37    if (f1 (0, f3, f4) != 2 || f1 (1, f3, f4) != 1 || f2 (0, f3, f4) != 1
      38        || f2 (1, f3, f4) != 2)
      39      __builtin_abort ();
      40    return 0;
      41  }