| /* { dg-require-effective-target trampolines } */ | |
| /* Test that the GP gets properly restored, either by the nonlocal | |
| receiver or the nested function. */ | |
| typedef __SIZE_TYPE__ size_t; | |
| extern void abort (void); | |
| extern void exit (int); | |
| extern void qsort(void *, size_t, size_t, int (*)(const void *, const void *)); | |
| int main () | |
| { | |
| __label__ nonlocal; | |
| int compare (const void *a, const void *b) | |
| { | |
| goto nonlocal; | |
| } | |
| char array[3]; | |
| qsort (array, 3, 1, compare); | |
| abort (); | |
| nonlocal: | |
| exit (0); | |
| } |