1 short optab[5];
2 char buf[10];
execute(ip)3 execute (ip)
4      register short *ip;
5 {
6 #ifndef NO_LABEL_VALUES
7   register void *base = &&x;
8   char *bp = buf;
9   static void *tab[] = {&&x, &&y, &&z};
10   if (ip == 0)
11     {
12       int i;
13       for (i = 0; i < 3; ++i)
14 	optab[i] = (short)(tab[i] - base);
15       return;
16     }
17 x:  *bp++='x';
18     goto *(base + *ip++);
19 y:  *bp++='y';
20     goto *(base + *ip++);
21 z:  *bp++='z';
22     *bp=0;
23     return;
24 #else
25     strcpy (buf, "xyxyz");
26 #endif
27 }
28 
29 short p[5];
30 
main()31 main ()
32 {
33   execute ((short *) 0);
34   p[0] = optab[1];
35   p[1] = optab[0];
36   p[2] = optab[1];
37   p[3] = optab[2];
38   execute (&p);
39   if (strcmp (buf, "xyxyz"))
40     abort ();
41   exit (0);
42 }
43