/* { dg-do compile } */ /* { dg-options "-O3" } */ typedef int (*funct)(int, int, int); extern int f(int, int, int); extern int g(int, int, int); extern int h(int, funct, funct); static int baz(int x, int y, int z) { return x + y + z; } static int bar(int n, funct f1, funct f2) { return h(n, f1, f2) + f1(0, 1, 2); } static int foo(int n, funct f1, funct f2) { return bar(n, f1, f2) + f2(0, 1, 2); } int main(void) { return foo(0, f, g) #ifndef ICE2 + foo(0, baz, g) #endif ; }