1 /* { dg-do run } */
2 /* { dg-options "-O" } */
3 
4 #include <setjmp.h>
5 
6 extern void abort (void);
7 
8 jmp_buf buf;
9 
raise0(void)10 void raise0(void)
11 {
12   __builtin_longjmp (buf, 1);
13 }
14 
execute(int cmd)15 int execute(int cmd)
16 {
17   int last = 0;
18 
19   if (__builtin_setjmp (buf) == 0)
20     while (1)
21       {
22 	last = 1;
23 	raise0 ();
24       }
25 
26   if (last == 0)
27     return 0;
28   else
29     return cmd;
30 }
31 
main(void)32 int main(void)
33 {
34   if (execute (1) == 0)
35     abort ();
36 
37   return 0;
38 }
39