+++ /dev/null
-short optab[5];
-char buf[10];
-execute (ip)
- register short *ip;
-{
-#ifndef NO_LABEL_VALUES
- register void *base = &&x;
- char *bp = buf;
- static void *tab[] = {&&x, &&y, &&z};
- if (ip == 0)
- {
- int i;
- for (i = 0; i < 3; ++i)
- optab[i] = (short)(tab[i] - base);
- return;
- }
-x: *bp++='x';
- goto *(base + *ip++);
-y: *bp++='y';
- goto *(base + *ip++);
-z: *bp++='z';
- *bp=0;
- return;
-#else
- strcpy (buf, "xyxyz");
-#endif
-}
-
-short p[5];
-
-main ()
-{
- execute ((short *) 0);
- p[0] = optab[1];
- p[1] = optab[0];
- p[2] = optab[1];
- p[3] = optab[2];
- execute (&p);
- if (strcmp (buf, "xyxyz"))
- abort ();
- exit (0);
-}