1 int expect_do1 = 1, expect_do2 = 2; 2 doit(int x)3static int doit(int x){ 4 __label__ lbl1; 5 __label__ lbl2; 6 static int jtab_init = 0; 7 static void *jtab[2]; 8 9 if(!jtab_init) { 10 jtab[0] = &&lbl1; 11 jtab[1] = &&lbl2; 12 jtab_init = 1; 13 } 14 goto *jtab[x]; 15 lbl1: 16 return 1; 17 lbl2: 18 return 2; 19 } 20 do1(void)21static void do1(void) { 22 if (doit(0) != expect_do1) 23 abort (); 24 } 25 do2(void)26static void do2(void){ 27 if (doit(1) != expect_do2) 28 abort (); 29 } 30 main(void)31int main(void){ 32 #ifndef NO_LABEL_VALUES 33 do1(); 34 do2(); 35 #endif 36 exit(0); 37 } 38