aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1994-06-14 17:23:53 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1994-06-14 17:23:53 -0400
commitc95c07325b76fb61ede1d899a0c65ad573be1cde (patch)
tree908ee83849c5e6618a587cd47fc75789ca1c4743 /gcc
parent86bb0d5f7b6c138d95cd0c470a69e7249caa9552 (diff)
downloadgcc-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.c6
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)]]);