aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorVladimir Makarov <vmakarov@redhat.com>2011-08-23 23:06:04 +0000
committerVladimir Makarov <vmakarov@gcc.gnu.org>2011-08-23 23:06:04 +0000
commitd7b177038864d2e40419bcddbdfaca3b1644d175 (patch)
treef6a4acffaccebdbba5d13a56c6e3a3393ea92a29 /gcc
parent3d3aae5b2ef82d57ecc1af9de163bf9b024bf7d4 (diff)
downloadgcc-d7b177038864d2e40419bcddbdfaca3b1644d175.zip
gcc-d7b177038864d2e40419bcddbdfaca3b1644d175.tar.gz
gcc-d7b177038864d2e40419bcddbdfaca3b1644d175.tar.bz2
ira.c (ira_init_register_move_cost): Check small subclasses through ira_reg_class_max_nregs and ira_available_class_regs.
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/ira.c2
2 files changed, 6 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8b8ba62..0e8c707 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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.
diff --git a/gcc/ira.c b/gcc/ira.c
index 785478f..2ecb5a3 100644
--- 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);