diff options
author | Jeff Law <law@gcc.gnu.org> | 1997-12-06 17:31:01 -0700 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1997-12-06 17:31:01 -0700 |
commit | 956d69504d77d301015532d2f0564213f0efc706 (patch) | |
tree | ec80f8d1e46852ac1ba45aecdcda7201c302ac6f /gcc/reload1.c | |
parent | 27b6b158c29b45fd80c2f104d5da1f4bc818d7ab (diff) | |
download | gcc-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.c | 9 |
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)) |