diff options
author | Vladimir Makarov <vmakarov@redhat.com> | 2011-08-18 14:56:36 +0000 |
---|---|---|
committer | Vladimir Makarov <vmakarov@gcc.gnu.org> | 2011-08-18 14:56:36 +0000 |
commit | 9181a6e5b0beb4486bcd8c5d5b53d6e10cfc89ad (patch) | |
tree | 7665fff80006b4ee0895413a6c4f561a0d006144 /gcc/ira.c | |
parent | 99114bbfa1de1c286fffef4b0dff20a360066e2a (diff) | |
download | gcc-9181a6e5b0beb4486bcd8c5d5b53d6e10cfc89ad.zip gcc-9181a6e5b0beb4486bcd8c5d5b53d6e10cfc89ad.tar.gz gcc-9181a6e5b0beb4486bcd8c5d5b53d6e10cfc89ad.tar.bz2 |
re PR rtl-optimization/50107 ([IRA, i386] allocates registers in very non-optimal way)
2011-08-17 Vladimir Makarov <vmakarov@redhat.com>
PR rtl-optimization/50107
* ira-int.h (ira_hard_reg_not_in_set_p): Remove.
(ira_hard_reg_in_set_p): New.
* ira-color.c (calculate_saved_nregs): New.
(assign_hard_reg): Use it. Set up allocated_hard_reg_p for all
hard regs.
(allocno_reload_assign, fast_allocation): Use
ira_hard_reg_set_intersection_p instead of
ira_hard_reg_not_in_set_p.
* ira.c (setup_reg_renumber): Use
ira_hard_reg_set_intersection_p instead of
ira_hard_reg_not_in_set_p.
(setup_allocno_assignment_flags, calculate_allocation_cost): Use
ira_hard_reg_in_set_p instead of ira_hard_reg_not_in_set_p.
* ira-costs.c (ira_tune_allocno_costs): Use
ira_hard_reg_set_intersection_p instead of
ira_hard_reg_not_in_set_p.
From-SVN: r177865
Diffstat (limited to 'gcc/ira.c')
-rw-r--r-- | gcc/ira.c | 18 |
1 files changed, 9 insertions, 9 deletions
@@ -1953,8 +1953,8 @@ setup_reg_renumber (void) reg_class_contents[pclass]); } if (ALLOCNO_CALLS_CROSSED_NUM (a) != 0 - && ! ira_hard_reg_not_in_set_p (hard_regno, ALLOCNO_MODE (a), - call_used_reg_set)) + && ira_hard_reg_set_intersection_p (hard_regno, ALLOCNO_MODE (a), + call_used_reg_set)) { ira_assert (!optimize || flag_caller_saves || regno >= ira_reg_equiv_len @@ -1992,10 +1992,10 @@ setup_allocno_assignment_flags (void) || ALLOCNO_EMIT_DATA (a)->mem_optimized_dest_p || (ALLOCNO_MEMORY_COST (a) - ALLOCNO_CLASS_COST (a)) < 0); - ira_assert (hard_regno < 0 - || ! ira_hard_reg_not_in_set_p (hard_regno, ALLOCNO_MODE (a), - reg_class_contents - [ALLOCNO_CLASS (a)])); + ira_assert + (hard_regno < 0 + || ira_hard_reg_in_set_p (hard_regno, ALLOCNO_MODE (a), + reg_class_contents[ALLOCNO_CLASS (a)])); } } @@ -2013,9 +2013,9 @@ calculate_allocation_cost (void) { hard_regno = ALLOCNO_HARD_REGNO (a); ira_assert (hard_regno < 0 - || ! ira_hard_reg_not_in_set_p - (hard_regno, ALLOCNO_MODE (a), - reg_class_contents[ALLOCNO_CLASS (a)])); + || (ira_hard_reg_in_set_p + (hard_regno, ALLOCNO_MODE (a), + reg_class_contents[ALLOCNO_CLASS (a)]))); if (hard_regno < 0) { cost = ALLOCNO_MEMORY_COST (a); |