aboutsummaryrefslogtreecommitdiff
path: root/gcc/reload1.c
diff options
context:
space:
mode:
authorJeff Law <law@gcc.gnu.org>1997-12-06 17:31:01 -0700
committerJeff Law <law@gcc.gnu.org>1997-12-06 17:31:01 -0700
commit956d69504d77d301015532d2f0564213f0efc706 (patch)
treeec80f8d1e46852ac1ba45aecdcda7201c302ac6f /gcc/reload1.c
parent27b6b158c29b45fd80c2f104d5da1f4bc818d7ab (diff)
downloadgcc-956d69504d77d301015532d2f0564213f0efc706.zip
gcc-956d69504d77d301015532d2f0564213f0efc706.tar.gz
gcc-956d69504d77d301015532d2f0564213f0efc706.tar.bz2
Merge from gcc-2.8
From-SVN: r16987
Diffstat (limited to 'gcc/reload1.c')
-rw-r--r--gcc/reload1.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/gcc/reload1.c b/gcc/reload1.c
index a355a62..c8573dc 100644
--- a/gcc/reload1.c
+++ b/gcc/reload1.c
@@ -673,7 +673,14 @@ reload (first, global, dumpfile)
if (i > LAST_VIRTUAL_REGISTER)
{
if (GET_CODE (x) == MEM)
- reg_equiv_memory_loc[i] = x;
+ {
+ /* If the operand is a PLUS, the MEM may be shared,
+ so make sure we have an unshared copy here. */
+ if (GET_CODE (XEXP (x, 0)) == PLUS)
+ x = copy_rtx (x);
+
+ reg_equiv_memory_loc[i] = x;
+ }
else if (CONSTANT_P (x))
{
if (LEGITIMATE_CONSTANT_P (x))