/* { dg-do compile } */ | |
/* { dg-require-effective-target label_values } */ | |
typedef int Embryo_Cell; | |
int | |
embryo_program_run(Embryo_Cell *cip) | |
{ | |
unsigned char op; | |
Embryo_Cell offs; | |
static const void *switchtable[256] = { | |
&&SWITCHTABLE_EMBRYO_OP_NONE, &&SWITCHTABLE_EMBRYO_OP_LOAD_PRI | |
}; | |
for (;;) | |
{ | |
op = *cip++; | |
while (1) { | |
goto *switchtable[op]; | |
SWITCHTABLE_EMBRYO_OP_LOAD_PRI: | |
offs = *(Embryo_Cell *)cip++; | |
SWITCHTABLE_EMBRYO_OP_NONE: | |
break; | |
}; | |
} | |
return offs; | |
} |