(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.c-torture/
execute/
nestfunc-5.c
       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  }