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   __builtin_setjmp (buf);
20 
21   if (last == 0)
22     while (1)
23       {
24 	last = 1;
25 	raise0 ();
26       }
27 
28   if (last == 0)
29     return 0;
30   else
31     return cmd;
32 }
33 
main(void)34 int main(void)
35 {
36   if (execute (1) == 0)
37     abort ();
38 
39   return 0;
40 }
41