PR inline-asm/84742
[official-gcc.git] / gcc / testsuite / gcc.c-torture / execute / built-in-setjmp.c
blob137bfc5ec6b454f2e556e71b98d07f7c9fa18f31
1 /* { dg-require-effective-target indirect_jumps } */
2 /* { dg-require-effective-target alloca } */
4 extern int strcmp(const char *, const char *);
5 extern char *strcpy(char *, const char *);
6 extern void abort(void);
7 extern void exit(int);
9 void *buf[20];
11 void __attribute__((noinline))
12 sub2 (void)
14 __builtin_longjmp (buf, 1);
17 int
18 main ()
20 char *p = (char *) __builtin_alloca (20);
22 strcpy (p, "test");
24 if (__builtin_setjmp (buf))
26 if (strcmp (p, "test") != 0)
27 abort ();
29 exit (0);
33 int *q = (int *) __builtin_alloca (p[2] * sizeof (int));
34 int i;
36 for (i = 0; i < p[2]; i++)
37 q[i] = 0;
39 while (1)
40 sub2 ();