From c95c07325b76fb61ede1d899a0c65ad573be1cde Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Tue, 14 Jun 1994 17:23:53 -0400 Subject: [PATCH] (reload_as_needed): Clear spill_reg_store at start. (emit_reload_insns): Omit erroneous predicate of reload deletion -- reload_spill_index is not indexed by regno. From-SVN: r7454 --- gcc/reload1.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gcc/reload1.c b/gcc/reload1.c index 0b355b5..10afe98 100644 --- a/gcc/reload1.c +++ b/gcc/reload1.c @@ -3618,6 +3618,7 @@ reload_as_needed (first, live_known) rtx after_call = 0; bzero (spill_reg_rtx, sizeof spill_reg_rtx); + bzero (spill_reg_store, sizeof spill_reg_store); reg_last_reload_reg = (rtx *) alloca (max_regno * sizeof (rtx)); bzero (reg_last_reload_reg, max_regno * sizeof (rtx)); reg_has_output_reload = (char *) alloca (max_regno); @@ -5630,12 +5631,11 @@ emit_reload_insns (insn) if (optimize && GET_CODE (oldequiv) == REG && REGNO (oldequiv) < FIRST_PSEUDO_REGISTER && spill_reg_order[REGNO (oldequiv)] >= 0 - && spill_reg_store[reload_spill_index[REGNO (oldequiv)]] != 0 + && spill_reg_store[spill_reg_order[REGNO (oldequiv)]] != 0 && find_reg_note (insn, REG_DEAD, reload_in[j]) /* This is unsafe if operand occurs more than once in current insn. Perhaps some occurrences weren't reloaded. */ - && count_occurrences (PATTERN (insn), reload_in[j]) == 1 - && spill_reg_store[spill_reg_order[REGNO (oldequiv)]] != 0) + && count_occurrences (PATTERN (insn), reload_in[j]) == 1) delete_output_reload (insn, j, spill_reg_store[spill_reg_order[REGNO (oldequiv)]]); -- 2.7.4