Hi all: This patch is clean up useless initialize for IRA with LRA.
2014-08-27 Kito Cheng <k...@0xlab.org> * ira.c (ira): Don't initialize ira_spilled_reg_stack_slots and ira_spilled_reg_stack_slots_num if using lra. (do_reload): Remove release ira_spilled_reg_stack_slots part. * ira-color.c (ira_sort_regnos_for_alter_reg): Add assertion to make sure not using lra. (ira_reuse_stack_slot): Likewise. (ira_mark_new_stack_slot): Likewise.
From 8355e31fd26e7930d7e80303dab9901c9263bcbe Mon Sep 17 00:00:00 2001 From: Kito Cheng <k...@0xlab.org> Date: Wed, 20 Aug 2014 15:55:54 +0800 Subject: [PATCH] Don't init ira_spilled_reg_stack_slots in ira if using lra. 2014-08-27 Kito Cheng <k...@0xlab.org> * ira.c (ira): Don't initialize ira_spilled_reg_stack_slots and ira_spilled_reg_stack_slots_num if using lra. (do_reload): Remove release ira_spilled_reg_stack_slots part. * ira-color.c (ira_sort_regnos_for_alter_reg): Add assertion to make sure not using lra. (ira_reuse_stack_slot): Likewise. (ira_mark_new_stack_slot): Likewise. --- gcc/ira-color.c | 6 ++++++ gcc/ira.c | 21 ++++++++++----------- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/gcc/ira-color.c b/gcc/ira-color.c index e2ea359..6846567 100644 --- a/gcc/ira-color.c +++ b/gcc/ira-color.c @@ -4067,6 +4067,8 @@ ira_sort_regnos_for_alter_reg (int *pseudo_regnos, int n, ira_allocno_iterator ai; ira_allocno_t *spilled_coalesced_allocnos; + ira_assert (! ira_use_lra_p); + /* Set up allocnos can be coalesced. */ coloring_allocno_bitmap = ira_allocate_bitmap (); for (i = 0; i < n; i++) @@ -4416,6 +4418,8 @@ ira_reuse_stack_slot (int regno, unsigned int inherent_size, bitmap_iterator bi; struct ira_spilled_reg_stack_slot *slot = NULL; + ira_assert (! ira_use_lra_p); + ira_assert (inherent_size == PSEUDO_REGNO_BYTES (regno) && inherent_size <= total_size && ALLOCNO_HARD_REGNO (allocno) < 0); @@ -4528,6 +4532,8 @@ ira_mark_new_stack_slot (rtx x, int regno, unsigned int total_size) int slot_num; ira_allocno_t allocno; + ira_assert (! ira_use_lra_p); + ira_assert (PSEUDO_REGNO_BYTES (regno) <= total_size); allocno = ira_regno_allocno_map[regno]; slot_num = -ALLOCNO_HARD_REGNO (allocno) - 2; diff --git a/gcc/ira.c b/gcc/ira.c index 7c18496..e8d5b44 100644 --- a/gcc/ira.c +++ b/gcc/ira.c @@ -5260,14 +5260,16 @@ ira (FILE *f) #ifdef ENABLE_IRA_CHECKING print_redundant_copies (); #endif - - ira_spilled_reg_stack_slots_num = 0; - ira_spilled_reg_stack_slots - = ((struct ira_spilled_reg_stack_slot *) - ira_allocate (max_regno - * sizeof (struct ira_spilled_reg_stack_slot))); - memset (ira_spilled_reg_stack_slots, 0, - max_regno * sizeof (struct ira_spilled_reg_stack_slot)); + if (! ira_use_lra_p) + { + ira_spilled_reg_stack_slots_num = 0; + ira_spilled_reg_stack_slots + = ((struct ira_spilled_reg_stack_slot *) + ira_allocate (max_regno + * sizeof (struct ira_spilled_reg_stack_slot))); + memset (ira_spilled_reg_stack_slots, 0, + max_regno * sizeof (struct ira_spilled_reg_stack_slot)); + } } allocate_initial_values (); @@ -5303,9 +5305,6 @@ do_reload (void) FOR_ALL_BB_FN (bb, cfun) bb->loop_father = NULL; current_loops = NULL; - - if (ira_conflicts_p) - ira_free (ira_spilled_reg_stack_slots); ira_destroy (); -- 1.9.3