ira-lives.c (process_single_reg_class_operands): Update the hard reg costs for all...
authorJeff Law <law@redhat.com>
Fri, 23 Oct 2009 03:43:14 +0000 (21:43 -0600)
committerJeff Law <law@gcc.gnu.org>
Fri, 23 Oct 2009 03:43:14 +0000 (21:43 -0600)
* ira-lives.c (process_single_reg_class_operands): Update the
hard reg costs for all the hard registers desired by the single
reg class operand.

From-SVN: r153487

gcc/ChangeLog
gcc/ira-lives.c

index b48375b..e5c2679 100644 (file)
@@ -1,3 +1,9 @@
+2009-10-22  Jeff Law  <law@redhat.com>
+
+       * ira-lives.c (process_single_reg_class_operands): Update the 
+       hard reg costs for all the hard registers desired by the
+       single reg class operand.
+
 2009-10-22  Richard Sandiford  <rdsandiford@googlemail.com>
 
        * simplify-rtx.c (simplify_replace_fn_rtx): Add a fallback case
index 822dccb..c67e89c 100644 (file)
@@ -841,6 +841,7 @@ process_single_reg_class_operands (bool in_p, int freq)
                  [ira_class_hard_regs[cl][0]]) >= 0
              && reg_class_size[cl] <= (unsigned) CLASS_MAX_NREGS (cl, mode))
            {
+             int i, size;
              cost
                = (freq
                   * (in_p
@@ -848,10 +849,12 @@ process_single_reg_class_operands (bool in_p, int freq)
                      : ira_get_register_move_cost (mode, cl, cover_class)));
              ira_allocate_and_set_costs
                (&ALLOCNO_CONFLICT_HARD_REG_COSTS (operand_a), cover_class, 0);
-             ALLOCNO_CONFLICT_HARD_REG_COSTS (operand_a)
-               [ira_class_hard_reg_index
-                [cover_class][ira_class_hard_regs[cl][0]]]
-               -= cost;
+             size = ira_reg_class_nregs[cover_class][mode];
+             for (i = 0; i < size; i++)
+               ALLOCNO_CONFLICT_HARD_REG_COSTS (operand_a)
+                 [ira_class_hard_reg_index
+                  [cover_class][ira_class_hard_regs[cl][i]]]
+                 -= cost;
            }
        }