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

     1  /* { dg-require-effective-target trampolines } */
     2  
     3  /* Test that the GP gets properly restored, either by the nonlocal
     4     receiver or the nested function.  */
     5  
     6  typedef __SIZE_TYPE__ size_t;
     7  extern void abort (void);
     8  extern void exit (int);
     9  extern void qsort(void *, size_t, size_t, int (*)(const void *, const void *));
    10  
    11  int main ()
    12  {
    13    __label__ nonlocal;
    14    int compare (const void *a, const void *b)
    15    {
    16      goto nonlocal;
    17    }
    18  
    19    char array[3];
    20    qsort (array, 3, 1, compare);
    21    abort ();
    22  
    23   nonlocal:
    24    exit (0);
    25  }