1 /* { dg-require-effective-target label_values } */ 2 /* { dg-require-effective-target trampolines } */ 3 /* { dg-add-options stack_size } */ 4 5 /* A slight variation of 920501-7.c. */ 6 7 #ifdef STACK_SIZE 8 #define DEPTH ((STACK_SIZE) / 512 + 1) 9 #else 10 #define DEPTH 1000 11 #endif 12 x(a)13x(a) 14 { 15 __label__ xlab; 16 void y(a) 17 { 18 void *x = &&llab; 19 if (a==-1) 20 goto *x; 21 if (a==0) 22 goto xlab; 23 llab: 24 y (a-1); 25 } 26 y (a); 27 xlab:; 28 return a; 29 } 30 main()31main () 32 { 33 34 if (x (DEPTH) != DEPTH) 35 abort (); 36 37 exit (0); 38 } 39