/* { 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); | |
} |