diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1994-06-14 17:23:53 -0400 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1994-06-14 17:23:53 -0400 |
commit | c95c07325b76fb61ede1d899a0c65ad573be1cde (patch) | |
tree | 908ee83849c5e6618a587cd47fc75789ca1c4743 /gcc | |
parent | 86bb0d5f7b6c138d95cd0c470a69e7249caa9552 (diff) | |
download | gcc-c95c07325b76fb61ede1d899a0c65ad573be1cde.zip gcc-c95c07325b76fb61ede1d899a0c65ad573be1cde.tar.gz gcc-c95c07325b76fb61ede1d899a0c65ad573be1cde.tar.bz2 |
(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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/reload1.c | 6 |
1 files 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)]]); |