diff options
author | Jeff Law <law@gcc.gnu.org> | 1999-09-06 23:49:18 -0600 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1999-09-06 23:49:18 -0600 |
commit | c5c7673583c6310e7f8e45704fdc4aadff33e393 (patch) | |
tree | f1a67b6ea75a7f0da3f06e0a1c60b213f4403168 /gcc/reload.c | |
parent | ad85216ece38be37dacbbb3fa7bb7db69aa33a4b (diff) | |
download | gcc-c5c7673583c6310e7f8e45704fdc4aadff33e393.zip gcc-c5c7673583c6310e7f8e45704fdc4aadff33e393.tar.gz gcc-c5c7673583c6310e7f8e45704fdc4aadff33e393.tar.bz2 |
Merge in gcc2-ss-010999
From-SVN: r29150
Diffstat (limited to 'gcc/reload.c')
-rw-r--r-- | gcc/reload.c | 39 |
1 files changed, 4 insertions, 35 deletions
diff --git a/gcc/reload.c b/gcc/reload.c index 1ebe140..93ca143 100644 --- a/gcc/reload.c +++ b/gcc/reload.c @@ -2472,9 +2472,6 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p) int goal_earlyclobber, this_earlyclobber; enum machine_mode operand_mode[MAX_RECOG_OPERANDS]; int retval = 0; - /* Cache the last regno for the last pseudo we did an output reload - for in case the next insn uses it. */ - static int last_output_reload_regno = -1; this_insn = insn; n_reloads = 0; @@ -2908,9 +2905,7 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p) while (*p && (c = *p++) != ',') switch (c) { - case '=': - case '+': - case '*': + case '=': case '+': case '*': break; case '%': @@ -2933,11 +2928,9 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p) while (*p && *p != ',') p++; break; - case '0': - case '1': - case '2': - case '3': - case '4': + case '0': case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': + c -= '0'; this_alternative_matches[i] = c; /* We are supposed to match a previous operand. @@ -3243,21 +3236,6 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p) && this_alternative_matches[i] < 0) bad = 1; -#if 0 - /* If this is a pseudo-register that is set in the previous - insns, there's a good chance that it will already be in a - spill register and we can use that spill register. So - make this case cheaper. - - Disabled for egcs. egcs has better inheritance code and - this change causes problems with the improved reload - inheritance code. */ - if (GET_CODE (operand) == REG - && REGNO (operand) >= FIRST_PSEUDO_REGISTER - && REGNO (operand) == last_output_reload_regno) - reject--; -#endif - /* If this is a constant that is reloaded into the desired class by copying it to memory first, count that as another reload. This is consistent with other code and is @@ -3644,7 +3622,6 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p) reload_earlyclobbers[n_earlyclobbers++] = recog_operand[i]; /* Now record reloads for all the operands that need them. */ - last_output_reload_regno = -1; for (i = 0; i < noperands; i++) if (! goal_alternative_win[i]) { @@ -3708,9 +3685,6 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p) (insn_code_number < 0 ? 0 : insn_operand_strict_low[insn_code_number][i]), 0, i, operand_type[i]); - if (modified[i] != RELOAD_READ - && GET_CODE (recog_operand[i]) == REG) - last_output_reload_regno = REGNO (recog_operand[i]); } /* In a matching pair of operands, one must be input only and the other must be output only. @@ -3728,9 +3702,6 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p) operand_mode[goal_alternative_matched[i]], 0, 0, i, RELOAD_OTHER); operand_reloadnum[goal_alternative_matched[i]] = output_reloadnum; - if (GET_CODE (recog_operand[goal_alternative_matched[i]]) == REG) - last_output_reload_regno - = REGNO (recog_operand[goal_alternative_matched[i]]); } else if (modified[i] == RELOAD_WRITE && modified[goal_alternative_matched[i]] == RELOAD_READ) @@ -3745,8 +3716,6 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p) operand_mode[i], 0, 0, i, RELOAD_OTHER); operand_reloadnum[i] = output_reloadnum; - if (GET_CODE (recog_operand[i]) == REG) - last_output_reload_regno = REGNO (recog_operand[i]); } else if (insn_code_number >= 0) abort (); |