summaryrefslogtreecommitdiff
path: root/gcc/explow.c
diff options
context:
space:
mode:
authorkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>2001-07-04 02:29:46 +0000
committerkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>2001-07-04 02:29:46 +0000
commita42e6220bed20791d2b7a411083781990d4425a5 (patch)
tree5843e4b15a3f25b3bcb14ad6ab916feccf2c22ce /gcc/explow.c
parent4c1de8c08ffca7852891e08667aacec6d9b6bc73 (diff)
downloadgcc-a42e6220bed20791d2b7a411083781990d4425a5.tar.gz
* explow.c (plus_constant_wide): Reinitialize Y for restart.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@43745 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/explow.c')
-rw-r--r--gcc/explow.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/gcc/explow.c b/gcc/explow.c
index bf5eb89622a..778b9719bf6 100644
--- a/gcc/explow.c
+++ b/gcc/explow.c
@@ -78,7 +78,7 @@ plus_constant_wide (x, c)
register HOST_WIDE_INT c;
{
register RTX_CODE code;
- rtx y = x;
+ rtx y;
register enum machine_mode mode;
register rtx tem;
int all_constant = 0;
@@ -90,6 +90,8 @@ plus_constant_wide (x, c)
code = GET_CODE (x);
mode = GET_MODE (x);
+ y = x;
+
switch (code)
{
case CONST_INT:
@@ -608,10 +610,12 @@ validize_mem (ref)
{
if (GET_CODE (ref) != MEM)
return ref;
- if (memory_address_p (GET_MODE (ref), XEXP (ref, 0)))
+ if (! (flag_force_addr && CONSTANT_ADDRESS_P (XEXP (ref, 0)))
+ || memory_address_p (GET_MODE (ref), XEXP (ref, 0)))
return ref;
+
/* Don't alter REF itself, since that is probably a stack slot. */
- return change_address (ref, GET_MODE (ref), XEXP (ref, 0));
+ return replace_equiv_address (ref, XEXP (ref, 0));
}
/* Given REF, either a MEM or a REG, and T, either the type of X or