]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
sel-sched.c (choose_best_reg_1): Loop over all regs for mode.
authorAlexander Monakov <amonakov@ispras.ru>
Thu, 14 Jan 2010 11:15:07 +0000 (14:15 +0300)
committerAlexander Monakov <amonakov@gcc.gnu.org>
Thu, 14 Jan 2010 11:15:07 +0000 (14:15 +0300)
2010-01-14  Alexander Monakov  <amonakov@ispras.ru>

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

From-SVN: r155897

gcc/ChangeLog
gcc/sel-sched.c

index 56375a97b471c3abf592fa5d4ae5a1b9c2dab5cc..abfd461671cb73a14ce392b0ecd24c74d625b38c 100644 (file)
@@ -1,3 +1,7 @@
+2010-01-14  Alexander Monakov  <amonakov@ispras.ru>
+
+       * sel-sched.c (choose_best_reg_1):  Loop over all regs for mode.
+
 2010-01-14  Alexander Monakov  <amonakov@ispras.ru>
 
        * sel-sched.c (mark_unavailable_hard_regs): Do not try to search
index 7fb08828b9761650d91efae79449a5e5e42fcdeb..bdc7f9c42bcf60805051bfc347f8ec7d078df556 100644 (file)
@@ -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)));