diff options
author | Vladimir Makarov <vmakarov@redhat.com> | 2008-11-14 16:41:56 +0000 |
---|---|---|
committer | Vladimir Makarov <vmakarov@gcc.gnu.org> | 2008-11-14 16:41:56 +0000 |
commit | 927425dffe021ce15ded980b28a8a5f649b83934 (patch) | |
tree | 12060aac5280cd64ffa8d76772ce606ac96eab1b /gcc/ira-int.h | |
parent | 487e299ba6e4f2ce394789ba58573e2e9ea59b45 (diff) | |
download | gcc-927425dffe021ce15ded980b28a8a5f649b83934.tar.gz |
re PR rtl-optimization/37397 (IRA performance impact on SPEC CPU 2K/2006)
2008-11-14 Vladimir Makarov <vmakarov@redhat.com>
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
Diffstat (limited to 'gcc/ira-int.h')
-rw-r--r-- | gcc/ira-int.h | 5 |
1 files changed, 5 insertions, 0 deletions
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) |