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