extern int strcmp(const char *, const char *); | |
extern char *strcpy(char *, const char *); | |
extern void abort(void); | |
extern void exit(int); | |
void *buf[20]; | |
void __attribute__((noinline)) | |
sub2 (void) | |
{ | |
__builtin_longjmp (buf, 1); | |
} | |
int | |
main () | |
{ | |
char *p = (char *) __builtin_alloca (20); | |
strcpy (p, "test"); | |
if (__builtin_setjmp (buf)) | |
{ | |
if (strcmp (p, "test") != 0) | |
abort (); | |
exit (0); | |
} | |
{ | |
int *q = (int *) __builtin_alloca (p[2] * sizeof (int)); | |
int i; | |
for (i = 0; i < p[2]; i++) | |
q[i] = 0; | |
while (1) | |
sub2 (); | |
} | |
} |