From cf606f453b573214bdf791479bda3b93ba43807c Mon Sep 17 00:00:00 2001 From: Jim Wilson Date: Tue, 26 Sep 2000 00:40:42 +0000 Subject: [PATCH] Fix bad use of FP reg in post-modify address. * config/ia64/ia64.h (INDEX_REG_CLASS): Define to GENERAL_REGS. (REGNO_OK_FOR_INDEX_P): Define to REGNO_OK_FOR_BASE_P. (LEGITIMATE_ADDRESS_DISP): Use LEGITIMATE_ADDRESS_REG. (REG_OK_FOR_INDEX): Define to REG_OK_FOR_BASE_P. From-SVN: r36640 --- gcc/ChangeLog | 7 +++++++ gcc/config/ia64/ia64.h | 15 ++++++++------- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3b3a6f2..aeba67f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2000-09-25 Jim Wilson + + * config/ia64/ia64.h (INDEX_REG_CLASS): Define to GENERAL_REGS. + (REGNO_OK_FOR_INDEX_P): Define to REGNO_OK_FOR_BASE_P. + (LEGITIMATE_ADDRESS_DISP): Use LEGITIMATE_ADDRESS_REG. + (REG_OK_FOR_INDEX): Define to REG_OK_FOR_BASE_P. + Tue 26-Sep-2000 00:16:22 BST Neil Booth * cpplex.c (parse_args): Don't set VOID_REST flag. diff --git a/gcc/config/ia64/ia64.h b/gcc/config/ia64/ia64.h index 68fa3fb..6f13d8c 100644 --- a/gcc/config/ia64/ia64.h +++ b/gcc/config/ia64/ia64.h @@ -978,8 +978,8 @@ enum reg_class /* A macro whose definition is the name of the class to which a valid index register must belong. An index register is one used in an address where its value is either multiplied by a scale factor or added to another register - (as well as added to a displacement). */ -#define INDEX_REG_CLASS NO_REGS + (as well as added to a displacement). This is needed for POST_MODIFY. */ +#define INDEX_REG_CLASS GENERAL_REGS /* A C expression which defines the machine-dependent operand constraint letters for register classes. If CHAR is such a letter, the value should be @@ -1004,8 +1004,9 @@ enum reg_class /* A C expression which is nonzero if register number NUM is suitable for use as an index register in operand addresses. It may be either a suitable hard - register or a pseudo register that has been allocated such a hard reg. */ -#define REGNO_OK_FOR_INDEX_P(NUM) 0 + register or a pseudo register that has been allocated such a hard reg. + This is needed for POST_MODIFY. */ +#define REGNO_OK_FOR_INDEX_P(NUM) REGNO_OK_FOR_BASE_P (NUM) /* A C expression that places additional restrictions on the register class to use when it is necessary to copy value X into a register in class CLASS. @@ -1743,7 +1744,7 @@ do { \ #define LEGITIMATE_ADDRESS_DISP(R, X) \ (GET_CODE (X) == PLUS \ && rtx_equal_p (R, XEXP (X, 0)) \ - && (GET_CODE (XEXP (X, 1)) == REG \ + && (LEGITIMATE_ADDRESS_REG (XEXP (X, 1)) \ || (GET_CODE (XEXP (X, 1)) == CONST_INT \ && INTVAL (XEXP (X, 1)) >= -256 \ && INTVAL (XEXP (X, 1)) < 256))) @@ -1774,9 +1775,9 @@ do { \ #endif /* A C expression that is nonzero if X (assumed to be a `reg' RTX) is valid for - use as an index register. */ + use as an index register. This is needed for POST_MODIFY. */ -#define REG_OK_FOR_INDEX_P(X) 0 +#define REG_OK_FOR_INDEX_P(X) REG_OK_FOR_BASE_P (X) /* A C compound statement that attempts to replace X with a valid memory address for an operand of mode MODE. -- 2.7.4