ira.c (ira_init_register_move_cost): Check small subclasses through ira_reg_class_max...
authorVladimir Makarov <vmakarov@redhat.com>
Tue, 23 Aug 2011 23:06:04 +0000 (23:06 +0000)
committerVladimir Makarov <vmakarov@gcc.gnu.org>
Tue, 23 Aug 2011 23:06:04 +0000 (23:06 +0000)
2011-08-23  Vladimir Makarov  <vmakarov@redhat.com>

* ira.c (ira_init_register_move_cost): Check small subclasses
through ira_reg_class_max_nregs and ira_available_class_regs.

From-SVN: r178019

gcc/ChangeLog
gcc/ira.c

index 8b8ba626270ebec12f6f0c19a50e41f077b5e5ee..0e8c70700c7de4626dccfcc25951d12c0e430cc2 100644 (file)
@@ -1,3 +1,8 @@
+2011-08-23  Vladimir Makarov  <vmakarov@redhat.com>
+
+       * ira.c (ira_init_register_move_cost): Check small subclasses
+       through ira_reg_class_max_nregs and ira_available_class_regs.
+
 2011-08-23  Uros Bizjak  <ubizjak@gmail.com>
 
        * config/i386/constraints.md (Yp): New register constraint.
index 785478f7457ce5be6082eaabbbf6017ffea7877b..2ecb5a302b6f169008cef9cb54eaaaef0cbf2820 100644 (file)
--- a/gcc/ira.c
+++ b/gcc/ira.c
@@ -1503,7 +1503,7 @@ ira_init_register_move_cost (enum machine_mode mode)
     {
       /* Some subclasses are to small to have enough registers to hold
         a value of MODE.  Just ignore them.  */
-      if (! contains_reg_of_mode[cl1][mode])
+      if (ira_reg_class_max_nregs[cl1][mode] > ira_available_class_regs[cl1])
        continue;
       COPY_HARD_REG_SET (temp_hard_regset, reg_class_contents[cl1]);
       AND_COMPL_HARD_REG_SET (temp_hard_regset, no_unit_alloc_regs);