diff options
author | Jeff Law <law@redhat.com> | 2009-10-22 21:43:14 -0600 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 2009-10-22 21:43:14 -0600 |
commit | d5b5b6bca0e7126a75715c2478a62dd4b5ed8808 (patch) | |
tree | 4892b18235641740a7dc4b8fb22a1dd5935436b7 /gcc/ira-lives.c | |
parent | 5ba0d527e18ab35026c308c1e4ca94b732fb705f (diff) | |
download | gcc-d5b5b6bca0e7126a75715c2478a62dd4b5ed8808.zip gcc-d5b5b6bca0e7126a75715c2478a62dd4b5ed8808.tar.gz gcc-d5b5b6bca0e7126a75715c2478a62dd4b5ed8808.tar.bz2 |
ira-lives.c (process_single_reg_class_operands): Update the hard reg costs for all the hard registers desired by the single reg...
* 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
Diffstat (limited to 'gcc/ira-lives.c')
-rw-r--r-- | gcc/ira-lives.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/gcc/ira-lives.c b/gcc/ira-lives.c index 822dccb..c67e89c 100644 --- a/gcc/ira-lives.c +++ b/gcc/ira-lives.c @@ -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; } } |