backport: sel-sched.c (choose_best_reg_1): Loop over all regs for mode.

Backport from mainline:
 2010-01-14  Alexander Monakov  <amonakov@ispras.ru>

        * sel-sched.c (choose_best_reg_1):  Loop over all regs for mode.

From-SVN: r163510
This commit is contained in:
Andrey Belevantsev 2010-08-24 13:04:29 +04:00 committed by Andrey Belevantsev
parent 2e84372e2f
commit e9b7434933
2 changed files with 18 additions and 0 deletions

View File

@ -1,3 +1,10 @@
2010-08-24 Andrey Belevantsev <abel@ispras.ru>
Backport from mainline:
2010-01-14 Alexander Monakov <amonakov@ispras.ru>
* sel-sched.c (choose_best_reg_1): Loop over all regs for mode.
2010-08-24 Andrey Belevantsev <abel@ispras.ru>
Backport from mainline:

View File

@ -1428,6 +1428,16 @@ choose_best_reg_1 (HARD_REG_SET hard_regs_used,
0, cur_reg, hrsi)
if (! TEST_HARD_REG_BIT (hard_regs_used, cur_reg))
{
/* Check that all hard regs for mode are available. */
for (i = 1, n = hard_regno_nregs[cur_reg][mode]; i < n; i++)
if (TEST_HARD_REG_BIT (hard_regs_used, cur_reg + i)
|| !TEST_HARD_REG_BIT (reg_rename_p->available_for_renaming,
cur_reg + i))
break;
if (i < n)
continue;
/* All hard registers are available. */
if (best_new_reg < 0
|| reg_rename_tick[cur_reg] < reg_rename_tick[best_new_reg])
@ -1459,6 +1469,7 @@ choose_best_reg (HARD_REG_SET hard_regs_used, struct reg_rename *reg_rename_p,
rtx best_reg = choose_best_reg_1 (hard_regs_used, reg_rename_p,
original_insns, is_orig_reg_p_ptr);
/* FIXME loop over hard_regno_nregs here. */
gcc_assert (best_reg == NULL_RTX
|| TEST_HARD_REG_BIT (sel_hrd.regs_ever_used, REGNO (best_reg)));