1/* { dg-do compile } */ 2/* { dg-options "-O3" } */ 3 4typedef int (*funct)(int, int, int); 5 6extern int f(int, int, int); 7extern int g(int, int, int); 8extern int h(int, funct, funct); 9 10static int baz(int x, int y, int z) 11{ 12 return x + y + z; 13} 14 15static int bar(int n, funct f1, funct f2) 16{ 17 return h(n, f1, f2) + f1(0, 1, 2); 18} 19 20static int foo(int n, funct f1, funct f2) 21{ 22 return bar(n, f1, f2) + f2(0, 1, 2); 23} 24 25int main(void) 26{ 27 return foo(0, f, g) 28#ifndef ICE2 29 + foo(0, baz, g) 30#endif 31 ; 32} 33