]>
Commit | Line | Data |
---|---|---|
4f6c2131 EB |
1 | /* { dg-do run } */ |
2 | /* { dg-options "-O2" } */ | |
631da28e | 3 | /* { dg-require-effective-target nonlocal_goto } */ |
4f6c2131 EB |
4 | |
5 | extern void abort (void); | |
6 | ||
7 | int global; | |
8 | ||
8ece1ab3 | 9 | static int foo(void) __attribute__((noinline)); |
4f6c2131 | 10 | |
8ece1ab3 | 11 | static int foo(void) |
4f6c2131 EB |
12 | { |
13 | global = 1; | |
14 | } | |
15 | ||
8ece1ab3 | 16 | static int bar(void) |
4f6c2131 EB |
17 | { |
18 | foo (); | |
19 | } | |
20 | ||
21 | int 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 | ||
36 | start: | |
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 | ||
51 | int main(void) | |
52 | { | |
53 | if (execute (1) == 0) | |
54 | abort (); | |
55 | ||
56 | return 0; | |
57 | } |