1/* { dg-do run } */ 2/* { dg-options "-O2" } */ 3 4extern void abort (void); 5 6int global; 7 8static foo(void) __attribute__((noinline)); 9 10static foo(void) 11{ 12 global = 1; 13} 14 15static bar(void) 16{ 17 foo (); 18 global = 0; 19} 20 21int execute(int cmd) 22{ 23 __label__ start; 24 25 void raise(void) 26 { 27 goto start; 28 } 29 30 int last; 31 32 bar (); 33 34 last = 0; 35 36start: 37 38 if (last == 0) 39 while (1) 40 { 41 last = 1; 42 raise (); 43 } 44 45 if (last == 0) 46 return 0; 47 else 48 return cmd; 49} 50 51int main(void) 52{ 53 if (execute (1) == 0) 54 abort (); 55 56 return 0; 57} 58