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)13 x(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()31 main ()
32 {
33 
34   if (x (DEPTH) != DEPTH)
35     abort ();
36 
37   exit (0);
38 }
39