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