From 04e61bd4dd50def56f95dc0f00c428d29cab9242 Mon Sep 17 00:00:00 2001 From: Richard Stallman Date: Sun, 1 Aug 1993 20:14:21 +0000 Subject: [PATCH] (PIC_CASE_VECTOR_ADDRESS): Defined. (GO_IF_LEGITIMATE_ADDRESS): If pic, accept LABEL+INDEX. From-SVN: r5051 --- gcc/config/m68k/m68k.h | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) 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. -- 2.30.2