1/* { dg-do run } */ 2/* { dg-options "-O2 -fipa-icf" } */ 3 4__attribute__ ((noinline, noclone)) 5int 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)) 14int 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)) 23int f3 (void) 24{ 25 return 1; 26} 27 28__attribute__ ((noinline, noclone)) 29int f4 (void) 30{ 31 return 2; 32} 33 34int 35main () 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} 42