modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/execute/comp-goto-2.c (about)

     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  }