From: Richard Stallman Date: Sun, 1 Aug 1993 20:14:21 +0000 (+0000) Subject: (PIC_CASE_VECTOR_ADDRESS): Defined. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=04e61bd4dd50def56f95dc0f00c428d29cab9242;p=gcc.git (PIC_CASE_VECTOR_ADDRESS): Defined. (GO_IF_LEGITIMATE_ADDRESS): If pic, accept LABEL+INDEX. From-SVN: r5051 --- diff --git a/gcc/config/m68k/m68k.h b/gcc/config/m68k/m68k.h index 215d41b1e16..72d94572b14 100644 --- a/gcc/config/m68k/m68k.h +++ b/gcc/config/m68k/m68k.h @@ -1217,9 +1217,19 @@ __transfer_from_trampoline () \ || INTVAL (XEXP (X, 1)) == 4 \ || INTVAL (XEXP (X, 1)) == 8))) -#define GO_IF_LEGITIMATE_ADDRESS(MODE, X, ADDR) \ -{ GO_IF_NONINDEXED_ADDRESS (X, ADDR); \ - GO_IF_INDEXED_ADDRESS (X, ADDR); } +/* If pic, we accept INDEX+LABEL, which is what do_tablejump makes. */ +#define GO_IF_LEGITIMATE_ADDRESS(MODE, X, ADDR) \ +{ GO_IF_NONINDEXED_ADDRESS (X, ADDR); \ + GO_IF_INDEXED_ADDRESS (X, ADDR); \ + if (flag_pic && MODE == CASE_VECTOR_MODE && GET_CODE (X) == PLUS \ + && LEGITIMATE_INDEX_P (XEXP (X, 0)) \ + && GET_CODE (XEXP (X, 1)) == LABEL_REF) \ + goto ADDR; } + +/* Don't call memory_address_noforce for the address to fetch + the switch offset. This address is ok as it stands (see above), + but memory_address_noforce would alter it. */ +#define PIC_CASE_VECTOR_ADDRESS(index) index /* Try machine-dependent ways of modifying an illegitimate address to be legitimate. If we find one, return the new, valid address.