1int expect_do1 = 1, expect_do2 = 2; 2 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]; 15lbl1: 16 return 1; 17lbl2: 18 return 2; 19} 20 21static void do1(void) { 22 if (doit(0) != expect_do1) 23 abort (); 24} 25 26static void do2(void){ 27 if (doit(1) != expect_do2) 28 abort (); 29} 30 31int main(void){ 32#ifndef NO_LABEL_VALUES 33 do1(); 34 do2(); 35#endif 36 exit(0); 37} 38