From 927425dffe021ce15ded980b28a8a5f649b83934 Mon Sep 17 00:00:00 2001 From: Vladimir Makarov Date: Fri, 14 Nov 2008 16:41:56 +0000 Subject: re PR rtl-optimization/37397 (IRA performance impact on SPEC CPU 2K/2006) 2008-11-14 Vladimir Makarov PR rtl-optimization/37397 * ira-int.h (struct ira_allocno): New member bad_spill_p. (ALLOCNO_BAD_SPILL_P): New macro. * ira-color.c (push_allocnos_to_stack): Check ALLOCNO_BAD_SPILL_P. * ira-build.c (ira_create_allocno): Initialize ALLOCNO_BAD_SPILL_P. (create_cap_allocno, propagate_allocno_info, remove_unnecessary_allocnos): Set up or update ALLOCNO_BAD_SPILL_P. (update_bad_spill_attribute): New function. (ira_build): Call it. * ira-costs.c (record_reg_classes): Set up ALLOCNO_BAD_SPILL_P. From-SVN: r141860 --- gcc/ira-int.h | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'gcc/ira-int.h') diff --git a/gcc/ira-int.h b/gcc/ira-int.h index c5e4bec6346..0ed1ec3a9ec 100644 --- a/gcc/ira-int.h +++ b/gcc/ira-int.h @@ -351,6 +351,10 @@ struct ira_allocno region and all its subregions recursively. */ unsigned int no_stack_reg_p : 1, total_no_stack_reg_p : 1; #endif + /* TRUE value means that there is no sense to spill the allocno + during coloring because the spill will result in additional + reloads in reload pass. */ + unsigned int bad_spill_p : 1; /* TRUE value means that the allocno was not removed yet from the conflicting graph during colouring. */ unsigned int in_graph_p : 1; @@ -435,6 +439,7 @@ struct ira_allocno #define ALLOCNO_NO_STACK_REG_P(A) ((A)->no_stack_reg_p) #define ALLOCNO_TOTAL_NO_STACK_REG_P(A) ((A)->total_no_stack_reg_p) #endif +#define ALLOCNO_BAD_SPILL_P(A) ((A)->bad_spill_p) #define ALLOCNO_IN_GRAPH_P(A) ((A)->in_graph_p) #define ALLOCNO_ASSIGNED_P(A) ((A)->assigned_p) #define ALLOCNO_MAY_BE_SPILLED_P(A) ((A)->may_be_spilled_p) -- cgit v1.2.1