aboutsummaryrefslogtreecommitdiff
path: root/gcc/explow.c
diff options
context:
space:
mode:
authorRichard Kenner <kenner@vlsi1.ultra.nyu.edu>2001-07-04 17:43:18 +0000
committerRichard Kenner <kenner@gcc.gnu.org>2001-07-04 13:43:18 -0400
commit792760b9e9c015cabd3d5f1f7cf4942081f646d6 (patch)
treedf66055b376252d4e98b02a6a2492ca9f4731ad2 /gcc/explow.c
parent861c44d0c94742492ae78c5ed6c1fc5b6364501c (diff)
downloadgcc-792760b9e9c015cabd3d5f1f7cf4942081f646d6.zip
gcc-792760b9e9c015cabd3d5f1f7cf4942081f646d6.tar.gz
gcc-792760b9e9c015cabd3d5f1f7cf4942081f646d6.tar.bz2
emit-rtl.c (replace_equiv_address): New function.
* emit-rtl.c (replace_equiv_address): New function. * expr.h (replace_equiv_address): New declaration. * explow.c (validize_mem): Call it instead of change_address and also call if -fforce-addr and address is constant. * expr.c: Replace more calls to change_address with adjust_address and/or replace_equiv_address or to validize_mem. * function.c, regmove.c, config/alpha/alpha.c: Likewise. * config/arm/arm.md, config/clipper/clipper.md: Likewise. * config/dsp16xx/dsp16xx.md, config/fr30/fr30.c: Likewise. * config/i370/i370.md, config/i860/i860.md: Likewise. * config/i960/i960.md, config/mips/mips.c: Likewise. * config/mips/mips.md, config/pa/pa.md: Likewise. * config/pdp11/pdp11.md, config/rs6000/rs6000.c: Likewise. * config/rs6000/rs6000.md, config/sh/sh.md: Likewise. From-SVN: r43762
Diffstat (limited to 'gcc/explow.c')
-rw-r--r--gcc/explow.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/explow.c b/gcc/explow.c
index 1acb834..6839459 100644
--- a/gcc/explow.c
+++ b/gcc/explow.c
@@ -610,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