From: Richard Stallman Date: Thu, 22 Oct 1992 12:05:31 +0000 (+0000) Subject: (GO_IF_INDEXABLE_BASE): Allow LABEL_REF only if it's for a jump table. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=875c5a311a5d97da6163e9a2140f780fb20f18a3;p=gcc.git (GO_IF_INDEXABLE_BASE): Allow LABEL_REF only if it's for a jump table. From-SVN: r2553 --- diff --git a/gcc/config/m68k/m68k.h b/gcc/config/m68k/m68k.h index 4b1497d32cb..0ae54258628 100644 --- a/gcc/config/m68k/m68k.h +++ b/gcc/config/m68k/m68k.h @@ -1128,8 +1128,15 @@ __transfer_from_trampoline () \ #define GO_IF_NONINDEXED_ADDRESS(X, ADDR) \ { if (INDIRECTABLE_1_ADDRESS_P (X)) goto ADDR; } -#define GO_IF_INDEXABLE_BASE(X, ADDR) \ -{ if (GET_CODE (X) == LABEL_REF) goto ADDR; \ +/* Only labels on dispatch tables are valid for indexing from. */ +#define GO_IF_INDEXABLE_BASE(X, ADDR) \ +{ rtx temp; \ + if (GET_CODE (X) == LABEL_REF \ + && (temp = next_nonnote_insn (XEXP (X, 0))) != 0 \ + && GET_CODE (temp) == JUMP_INSN \ + && (GET_CODE (PATTERN (temp)) == ADDR_VEC \ + || GET_CODE (PATTERN (temp)) == ADDR_DIFF_VEC)) \ + goto ADDR; \ if (GET_CODE (X) == REG && REG_OK_FOR_BASE_P (X)) goto ADDR; } #define GO_IF_INDEXING(X, ADDR) \