Patchwork Don't init ira_spilled_reg_stack_slots in ira if using lra.

login
register
mail settings
Submitter Kito Cheng
Date Aug. 27, 2014, 2:49 p.m.
Message ID <CA+yXCZASmVcOXj4mYOJsAsYXkPPqvDsTbf32cDe61W4BbSb42g@mail.gmail.com>
Download mbox | patch
Permalink /patch/383472/
State New
Headers show

Comments

Kito Cheng - Aug. 27, 2014, 2:49 p.m.
Hi all:

This patch is clean up useless initialize for IRA with LRA.

2014-08-27  Kito Cheng  <kito@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.
Kito Cheng - Sept. 3, 2014, 9:26 a.m.
ping!

On Wed, Aug 27, 2014 at 10:49 PM, Kito Cheng <kito.cheng@gmail.com> wrote:
> Hi all:
>
> This patch is clean up useless initialize for IRA with LRA.
>
> 2014-08-27  Kito Cheng  <kito@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.
Vladimir Makarov - Sept. 3, 2014, 3:19 p.m.
On 2014-09-03 5:26 AM, Kito Cheng wrote:
> ping!
>

The patch saves some compilation time for LRA based targets.  It is ok 
to commit.

Thanks, Kito.

> On Wed, Aug 27, 2014 at 10:49 PM, Kito Cheng <kito.cheng@gmail.com> wrote:
>> Hi all:
>>
>> This patch is clean up useless initialize for IRA with LRA.
>>
>> 2014-08-27  Kito Cheng  <kito@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.

Patch

From 8355e31fd26e7930d7e80303dab9901c9263bcbe Mon Sep 17 00:00:00 2001
From: Kito Cheng <kito@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  <kito@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