aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Stallman <rms@gnu.org>1992-10-06 00:19:55 +0000
committerRichard Stallman <rms@gnu.org>1992-10-06 00:19:55 +0000
commitd25554549b6ea81d76a3cc920ff20ec915585f96 (patch)
tree8cbf0280ea108f5be345b52f04ba8b45c941014c /gcc
parent026380ff6beed08353f631ac2e974fbf23547ca1 (diff)
downloadgcc-d25554549b6ea81d76a3cc920ff20ec915585f96.zip
gcc-d25554549b6ea81d76a3cc920ff20ec915585f96.tar.gz
gcc-d25554549b6ea81d76a3cc920ff20ec915585f96.tar.bz2
(find_reloads_address): If tem != ad, then create a new
mem to hold it and store it back into memrefloc. From-SVN: r2330
Diffstat (limited to 'gcc')
-rw-r--r--gcc/reload.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/gcc/reload.c b/gcc/reload.c
index b5f844b..459939b 100644
--- a/gcc/reload.c
+++ b/gcc/reload.c
@@ -3618,6 +3618,12 @@ find_reloads_address (mode, memrefloc, ad, loc, operand, ind_levels)
tem = ad;
find_reloads_address (GET_MODE (ad), &tem, XEXP (ad, 0), &XEXP (ad, 0),
operand, ind_levels == 0 ? 0 : ind_levels - 1);
+
+ /* 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);
+
/* Check similar cases as for indirect addresses as above except
that we can allow pseudos and a MEM since they should have been
taken care of above. */