http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46216
--- Comment #3 from Richard Guenther <rguenth at gcc dot gnu.org> 2010-11-02 15:11:16 UTC --- Reduced testcase: 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; }