PR ipa/61602
[official-gcc.git] / gcc / testsuite / gcc.dg / torture / stackalign / setjmp-1.c
blob13cc300584b7bf5156e0adea6d0b395c66ed15c1
1 /* { dg-do run } */
2 /* { dg-require-effective-target indirect_jumps } */
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 = 0;
22 p = (char *) __builtin_alloca (20);
24 strcpy (p, "test");
26 if (__builtin_setjmp (buf))
28 if (strcmp (p, "test") != 0)
29 abort ();
31 exit (0);
35 int *q = (int *) __builtin_alloca (p[2] * sizeof (int));
36 int i;
38 for (i = 0; i < p[2]; i++)
39 q[i] = 0;
41 while (1)
42 sub2 ();