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

     1  /* { dg-require-effective-target trampolines } */
     2  
     3  extern void abort (void);
     4  extern void exit (int);
     5  
     6  static void recursive (int n, void (*proc) (void))
     7  {
     8    __label__ l1;
     9  
    10    void do_goto (void)
    11    {
    12      goto l1;
    13    }
    14  
    15    if (n == 3)
    16        recursive (n - 1, do_goto);
    17    else if (n > 0)
    18      recursive (n - 1, proc);
    19    else
    20      (*proc) ();
    21    return;
    22  
    23  l1:
    24    if (n == 3)
    25      exit (0);
    26    else
    27      abort ();
    28  }
    29  
    30  int main ()
    31  {
    32    recursive (10, abort);
    33    abort ();
    34  }