1 extern int foo (int, int, int (*) (int, int, int, int, int, int, int));
2 
3 int z;
4 
5 int
main(void)6 main (void)
7 {
8 #ifndef NO_TRAMPOLINES
9   int sum = 0;
10   int i;
11 
12   int nested (int a, int b, int c, int d, int e, int f, int g)
13     {
14       z = c + d + e + f + g;
15 
16       if (a > 2 * b)
17         return a - b;
18       else
19         return b - a;
20     }
21 
22   for (i = 0; i < 10; ++i)
23     {
24       int j;
25 
26       for (j = 0; j < 10; ++j)
27         {
28           int k;
29 
30           for (k = 0; k < 10; ++k)
31             sum += foo (i, j > k ? j - k : k - j, nested);
32         }
33     }
34 
35   if (sum != 2300)
36     abort ();
37 
38   if (z != 0x1b)
39     abort ();
40 #endif
41 
42   exit (0);
43 }
44 
45 int
foo(int a,int b,int (* fp)(int,int,int,int,int,int,int))46 foo (int a, int b, int (* fp) (int, int, int, int, int, int, int))
47 {
48   return fp (a, b, a, b, a, b, a);
49 }
50