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