From: Alexander Monakov Date: Thu, 14 Jan 2010 11:15:07 +0000 (+0300) Subject: sel-sched.c (choose_best_reg_1): Loop over all regs for mode. X-Git-Tag: releases/gcc-4.5.0~1229 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a9ced68beb3b5d81dc6803f04cb33fb5e445c83a;p=thirdparty%2Fgcc.git sel-sched.c (choose_best_reg_1): Loop over all regs for mode. 2010-01-14 Alexander Monakov * sel-sched.c (choose_best_reg_1): Loop over all regs for mode. From-SVN: r155897 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 56375a97b471..abfd461671cb 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2010-01-14 Alexander Monakov + + * sel-sched.c (choose_best_reg_1): Loop over all regs for mode. + 2010-01-14 Alexander Monakov * sel-sched.c (mark_unavailable_hard_regs): Do not try to search diff --git a/gcc/sel-sched.c b/gcc/sel-sched.c index 7fb08828b976..bdc7f9c42bcf 100644 --- a/gcc/sel-sched.c +++ b/gcc/sel-sched.c @@ -1429,6 +1429,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]) @@ -1460,6 +1470,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)));