1/* { dg-do run } */
2
3extern void abort (void);
4
5int global;
6
7static void foo(void) __attribute__((noinline));
8
9static void foo(void)
10{
11  global = 1;
12}
13
14static void bar(void)
15{
16  foo ();
17  global = 0;
18}
19
20int execute(int cmd)
21{
22  __label__ start;
23
24  void raise(void)
25  {
26    goto start;
27  }
28
29  int last = -1;
30
31  bar ();
32
33  last = 0;
34
35start:
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
50int main(void)
51{
52  if (execute (1) == 0)
53    abort ();
54
55  return 0;
56}
57