From 9181a6e5b0beb4486bcd8c5d5b53d6e10cfc89ad Mon Sep 17 00:00:00 2001 From: Vladimir Makarov Date: Thu, 18 Aug 2011 14:56:36 +0000 Subject: re PR rtl-optimization/50107 ([IRA, i386] allocates registers in very non-optimal way) 2011-08-17 Vladimir Makarov 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 --- gcc/ira.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'gcc/ira.c') diff --git a/gcc/ira.c b/gcc/ira.c index b54762e..e4be8b5 100644 --- a/gcc/ira.c +++ b/gcc/ira.c @@ -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); -- cgit v1.1