extern int foo (int, int, int (*) (int, int, int, int, int, int, int)); int z; int main (void) { #ifndef NO_TRAMPOLINES int sum = 0; int i; int nested (int a, int b, int c, int d, int e, int f, int g) { z = c + d + e + f + g; if (a > 2 * b) return a - b; else return b - a; } for (i = 0; i < 10; ++i) { int j; for (j = 0; j < 10; ++j) { int k; for (k = 0; k < 10; ++k) sum += foo (i, j > k ? j - k : k - j, nested); } } if (sum != 2300) abort (); if (z != 0x1b) abort (); #endif exit (0); } int foo (int a, int b, int (* fp) (int, int, int, int, int, int, int)) { return fp (a, b, a, b, a, b, a); }