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 
main()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 }
26