From: J"orn Rennecke Date: Thu, 9 Jul 1998 10:29:03 +0000 (+0000) Subject: reload1.c (choose_reload_regs): If using an equivalence from find_equiv_reg and reg_r... X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=91d7e7acb18710023a59c44e2e817c02a4981808;p=platform%2Fupstream%2Fgcc.git 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 --- 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 + + * 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 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++)