summaryrefslogtreecommitdiff
path: root/gcc/ira-int.h
diff options
context:
space:
mode:
authorVladimir Makarov <vmakarov@redhat.com>2008-11-14 16:41:56 +0000
committerVladimir Makarov <vmakarov@gcc.gnu.org>2008-11-14 16:41:56 +0000
commit927425dffe021ce15ded980b28a8a5f649b83934 (patch)
tree12060aac5280cd64ffa8d76772ce606ac96eab1b /gcc/ira-int.h
parent487e299ba6e4f2ce394789ba58573e2e9ea59b45 (diff)
downloadgcc-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.h5
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)