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)10void raise0(void) 11 { 12 __builtin_longjmp (buf, 1); 13 } 14 execute(int cmd)15int 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)34int main(void) 35 { 36 if (execute (1) == 0) 37 abort (); 38 39 return 0; 40 } 41