From: Richard Kenner Date: Tue, 10 Jul 2001 22:09:10 +0000 (+0000) Subject: recog.c (offsettable_address_p): Handle LO_SUM case. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=07217645f7ab36e65d91ff5ab0d8778ba9f924b5;p=gcc.git recog.c (offsettable_address_p): Handle LO_SUM case. * recog.c (offsettable_address_p): Handle LO_SUM case. * config/mips/mips.c (double_memory_operand): Use adjust_address_nv instead of plus_constant. From-SVN: r43912 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a15eb81ea56..34b7610b635 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +Tue Jul 10 07:27:53 2001 Richard Kenner + + * recog.c (offsettable_address_p): Handle LO_SUM case. + * config/mips/mips.c (double_memory_operand): Use adjust_address_nv + instead of plus_constant. + 2001-07-10 Stephane Carrez * reload1.c (merge_assigned_reloads): After a RELOAD_OTHER merge, diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c index 03356671ddb..48c391590b9 100644 --- a/gcc/config/mips/mips.c +++ b/gcc/config/mips/mips.c @@ -838,8 +838,6 @@ double_memory_operand (op, mode) rtx op; enum machine_mode mode; { - rtx addr; - if (GET_CODE (op) != MEM || ! memory_operand (op, mode)) { @@ -939,14 +937,12 @@ double_memory_operand (op, mode) /* Make sure that 4 added to the address is a valid memory address. This essentially just checks for overflow in an added constant. */ - addr = XEXP (op, 0); - - if (CONSTANT_ADDRESS_P (addr)) + if (CONSTANT_ADDRESS_P (XEXP (op, 0))) return 1; - return memory_address_p ((GET_MODE_CLASS (mode) == MODE_INT - ? SImode : SFmode), - plus_constant (addr, 4)); + op = adjust_address_nv (op, GET_MODE_CLASS (mode) == MODE_INT + ? SImode : SFmode, 4); + return memory_address_p (XEXP (op, 0)); } /* Return nonzero if the code of this rtx pattern is EQ or NE. */ diff --git a/gcc/recog.c b/gcc/recog.c index 01bc1f3a373..26ff0302189 100644 --- a/gcc/recog.c +++ b/gcc/recog.c @@ -1963,9 +1963,13 @@ offsettable_address_p (strictp, mode, y) /* The offset added here is chosen as the maximum offset that any instruction could need to add when operating on something of the specified mode. We assume that if Y and Y+c are - valid addresses then so is Y+d for all 0