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 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)32int main(void) 33 { 34 if (execute (1) == 0) 35 abort (); 36 37 return 0; 38 } 39