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