(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
tree-prof/
pr44777.c
       1  /* PR middle-end/44777 */
       2  /* { dg-require-effective-target label_values } */
       3  /* { dg-require-effective-target trampolines } */
       4  /* { dg-options "-O0" } */
       5  /* { dg-add-options stack_size } */
       6  
       7  /* A variant of gcc.c-torture/execute/comp-goto-2.c.  */
       8  
       9  extern void abort (void);
      10  extern void exit (int);
      11  
      12  #ifdef STACK_SIZE
      13  #define DEPTH ((STACK_SIZE) / 512 + 1)
      14  #else
      15  #define DEPTH 1000
      16  #endif
      17  
      18  int
      19  x (int a)
      20  {
      21    __label__ xlab;
      22    void y (int a)
      23      {
      24        void *x = &&llab;
      25        if (a==-1)
      26  	goto *x;
      27        if (a==0)
      28  	goto xlab;
      29      llab:
      30        y (a-1);
      31      }
      32    y (a);
      33   xlab:;
      34    return a;
      35  }
      36  
      37  int
      38  main ()
      39  {
      40  
      41    if (x (DEPTH) != DEPTH)
      42      abort ();
      43  
      44    exit (0);
      45  }