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
This commit is contained in:
J"orn Rennecke 1998-07-09 10:29:03 +00:00 committed by Joern Rennecke
parent 9da4652288
commit 91d7e7acb1
2 changed files with 12 additions and 0 deletions

View File

@ -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

View File

@ -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++)