1extern void abort (void);
2extern void exit (int);
3
4#ifndef NO_TRAMPOLINES
5static void recursive (int n, void (*proc) (void))
6{
7  __label__ l1;
8
9  void do_goto (void)
10  {
11    goto l1;
12  }
13
14  if (n == 3)
15      recursive (n - 1, do_goto);
16  else if (n > 0)
17    recursive (n - 1, proc);
18  else
19    (*proc) ();
20  return;
21
22l1:
23  if (n == 3)
24    exit (0);
25  else
26    abort ();
27}
28
29int main ()
30{
31  recursive (10, abort);
32  abort ();
33}
34#else
35int main () { return 0; }
36#endif
37