1extern int foo (int, int, int (*) (int, int, int, int, int, int, int));
2
3int z;
4
5int
6main (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
45int
46foo (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