diff options
| author | wilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-09-26 00:40:42 +0000 | 
|---|---|---|
| committer | wilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-09-26 00:40:42 +0000 | 
| commit | 7a458ac266850ca4ee2936dd6bb33bc44c15b01f (patch) | |
| tree | 61a5669d1e5f6c5c1d12177b6cb7ffe27a28de0d | |
| parent | 66914e49b166758e90e5eaa59ca2485c8ed59954 (diff) | |
| download | ppe42-gcc-7a458ac266850ca4ee2936dd6bb33bc44c15b01f.tar.gz ppe42-gcc-7a458ac266850ca4ee2936dd6bb33bc44c15b01f.zip  | |
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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@36640 138bc75d-0d04-0410-961f-82ee72b054a4
| -rw-r--r-- | gcc/ChangeLog | 7 | ||||
| -rw-r--r-- | gcc/config/ia64/ia64.h | 15 | 
2 files changed, 15 insertions, 7 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3b3a6f2de37..aeba67f9301 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2000-09-25  Jim Wilson  <wilson@cygnus.com> + +	* 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  <neilb@earthling.net>          * 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 68fa3fb6ae6..6f13d8cbd57 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.  | 

