1 
2 extern void abort ();
3 
4 static int ok = 0;
5 
bar(void)6 int bar(void)
7 {
8   ok |= 1;
9   return 1;
10 }
11 
bat(void)12 void bat(void)
13 {
14   ok |= 2;
15 }
16 
baz(void)17 void baz(void)
18 {
19   ok |= 4;
20 }
21 
foo()22 void foo()
23 {
24   goto lab;
25 
26   if (0)
27   {
28     if (({lab: bar();}))
29       bat ();
30     else
31       baz ();
32   }
33 }
34 
main()35 int main()
36 {
37   foo();
38   if (ok != 3)
39     abort ();
40   return 0;
41 }
42 
43