diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8b8ba626270..0e8c70700c7 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2011-08-23 Vladimir Makarov + + * 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 * config/i386/constraints.md (Yp): New register constraint. diff --git a/gcc/ira.c b/gcc/ira.c index 785478f7457..2ecb5a302b6 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);