aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Stallman <rms@gnu.org>1992-10-18 00:49:34 +0000
committerRichard Stallman <rms@gnu.org>1992-10-18 00:49:34 +0000
commitca3e4a2f2dba408a1706736ff1ec9cb8942edb38 (patch)
treedb762797e3a7a47d9d0279d8dd5363b25947b535 /gcc
parent4006fe4f1b0fcddfbae1ef7f6ab096266f94a961 (diff)
downloadgcc-ca3e4a2f2dba408a1706736ff1ec9cb8942edb38.zip
gcc-ca3e4a2f2dba408a1706736ff1ec9cb8942edb38.tar.gz
gcc-ca3e4a2f2dba408a1706736ff1ec9cb8942edb38.tar.bz2
(find_reloads_address): Redo last change: copy the mem
in the same way it's usually done. From-SVN: r2503
Diffstat (limited to 'gcc')
-rw-r--r--gcc/reload.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/gcc/reload.c b/gcc/reload.c
index befe84e..f5afa5f 100644
--- a/gcc/reload.c
+++ b/gcc/reload.c
@@ -3633,7 +3633,13 @@ find_reloads_address (mode, memrefloc, ad, loc, operand, ind_levels)
/* If tem was changed, then we must create a new memory reference to
hold it and store it back into memrefloc. */
if (tem != ad && memrefloc)
- *memrefloc = gen_rtx (MEM, GET_MODE (*memrefloc), tem);
+ {
+ rtx oldref = *memrefloc;
+ *memrefloc = copy_rtx (*memrefloc);
+ loc = &XEXP (*memrefloc, 0);
+ if (operand == oldref)
+ operand = *memrefloc;
+ }
/* Check similar cases as for indirect addresses as above except
that we can allow pseudos and a MEM since they should have been