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