aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJ"orn Rennecke <amylaar@cygnus.co.uk>1998-07-09 10:29:03 +0000
committerJoern Rennecke <amylaar@gcc.gnu.org>1998-07-09 11:29:03 +0100
commit91d7e7acb18710023a59c44e2e817c02a4981808 (patch)
treebf7692a96aea2b675910f908e67952e0063a9885 /gcc
parent9da4652288c52297d6bbbd3d205c295f4814878e (diff)
downloadgcc-91d7e7acb18710023a59c44e2e817c02a4981808.zip
gcc-91d7e7acb18710023a59c44e2e817c02a4981808.tar.gz
gcc-91d7e7acb18710023a59c44e2e817c02a4981808.tar.bz2
reload1.c (choose_reload_regs): If using an equivalence from find_equiv_reg and reg_reloaded_valid is not set...
* reload1.c (choose_reload_regs): If using an equivalence from find_equiv_reg and reg_reloaded_valid is not set for this register, clear the associated spill_reg_store. From-SVN: r21035
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/reload1.c6
2 files changed, 12 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a373deb..6d81369 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+Thu Jul 9 18:24:56 1998 J"orn Rennecke <amylaar@cygnus.co.uk>
+
+ * reload1.c (choose_reload_regs): If using an equivalence from
+ find_equiv_reg and reg_reloaded_valid is not set for this register,
+ clear the associated spill_reg_store.
+
Thu Jul 9 18:12:49 1998 J"orn Rennecke <amylaar@cygnus.co.uk>
* reload1.c (emit_reload_insns): If an output reload copies only
diff --git a/gcc/reload1.c b/gcc/reload1.c
index b115a94..3b1fd56 100644
--- a/gcc/reload1.c
+++ b/gcc/reload1.c
@@ -5861,6 +5861,12 @@ choose_reload_regs (insn, avoid_return_reg)
reload_reg_rtx[r] = equiv;
reload_inherited[r] = 1;
+ /* If reg_reloaded_valid is not set for this register,
+ there might be a stale spill_reg_store lying around.
+ We must clear it, since otherwise emit_reload_insns
+ might delete the store. */
+ if (! TEST_HARD_REG_BIT (reg_reloaded_valid, regno))
+ spill_reg_store[regno] = NULL_RTX;
/* If any of the hard registers in EQUIV are spill
registers, mark them as in use for this insn. */
for (k = 0; k < nr; k++)