From 91d7e7acb18710023a59c44e2e817c02a4981808 Mon Sep 17 00:00:00 2001 From: "J\"orn Rennecke" Date: Thu, 9 Jul 1998 10:29:03 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 6 ++++++ gcc/reload1.c | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a373deb99f3..6d81369c7a9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +Thu Jul 9 18:24:56 1998 J"orn Rennecke + + * 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 * reload1.c (emit_reload_insns): If an output reload copies only diff --git a/gcc/reload1.c b/gcc/reload1.c index b115a94adba..3b1fd5665e9 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++)