public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: tbsaunde+gcc@tbsaunde.org
To: gcc-patches@gcc.gnu.org
Cc: Trevor Saunders <tbsaunde+gcc@tbsaunde.org>
Subject: [PATCH 08/12] reduce conditional compilation for HARD_FRAME_POINTER_IS_FRAME_POINTER
Date: Tue, 21 Apr 2015 13:25:00 -0000	[thread overview]
Message-ID: <1429622658-9034-9-git-send-email-tbsaunde+gcc@tbsaunde.org> (raw)
In-Reply-To: <1429622658-9034-1-git-send-email-tbsaunde+gcc@tbsaunde.org>

From: Trevor Saunders <tbsaunde+gcc@tbsaunde.org>

gcc/ChangeLog:

2015-04-21  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>

	* alias.c (init_alias_target): Remove ifdef
	* HARD_FRAME_POINTER_IS_FRAME_POINTER.
	* df-scan.c (df_insn_refs_collect): Likewise.
	(df_get_regular_block_artificial_uses): Likewise.
	(df_get_eh_block_artificial_uses): Likewise.
	(df_get_entry_block_def_set): Likewise.
	(df_get_exit_block_use_set): Likewise.
	* emit-rtl.c (gen_rtx_REG): Likewise.
	* ira.c (ira_setup_eliminable_regset): Likewise.
	* reginfo.c (init_reg_sets_1): Likewise.
	* regrename.c (rename_chains): Likewise.
	* reload1.c (reload): Likewise.
	(eliminate_regs_in_insn): Likewise.
	* resource.c (mark_referenced_resources): Likewise.
	(init_resource_info): Likewise.
---
 gcc/alias.c     |  7 +++----
 gcc/df-scan.c   | 35 +++++++++++++++++------------------
 gcc/emit-rtl.c  |  6 +++---
 gcc/ira.c       | 23 ++++++++++++-----------
 gcc/reginfo.c   |  5 ++---
 gcc/regrename.c |  5 ++---
 gcc/reload1.c   | 10 ++++------
 gcc/resource.c  | 11 +++++------
 8 files changed, 48 insertions(+), 54 deletions(-)

diff --git a/gcc/alias.c b/gcc/alias.c
index a7160f3..8f48660 100644
--- a/gcc/alias.c
+++ b/gcc/alias.c
@@ -2765,10 +2765,9 @@ init_alias_target (void)
     = unique_base_value (UNIQUE_BASE_VALUE_ARGP);
   static_reg_base_value[FRAME_POINTER_REGNUM]
     = unique_base_value (UNIQUE_BASE_VALUE_FP);
-#if !HARD_FRAME_POINTER_IS_FRAME_POINTER
-  static_reg_base_value[HARD_FRAME_POINTER_REGNUM]
-    = unique_base_value (UNIQUE_BASE_VALUE_HFP);
-#endif
+  if (!HARD_FRAME_POINTER_IS_FRAME_POINTER)
+    static_reg_base_value[HARD_FRAME_POINTER_REGNUM]
+      = unique_base_value (UNIQUE_BASE_VALUE_HFP);
 }
 
 /* Set MEMORY_MODIFIED when X modifies DATA (that is assumed
diff --git a/gcc/df-scan.c b/gcc/df-scan.c
index b2e2e5d..69332a8 100644
--- a/gcc/df-scan.c
+++ b/gcc/df-scan.c
@@ -3247,12 +3247,11 @@ df_insn_refs_collect (struct df_collection_rec *collection_rec,
                          regno_reg_rtx[FRAME_POINTER_REGNUM],
                          NULL, bb, insn_info,
                          DF_REF_REG_USE, 0);
-#if !HARD_FRAME_POINTER_IS_FRAME_POINTER
-          df_ref_record (DF_REF_BASE, collection_rec,
-                         regno_reg_rtx[HARD_FRAME_POINTER_REGNUM],
-                         NULL, bb, insn_info,
-                         DF_REF_REG_USE, 0);
-#endif
+	  if (!HARD_FRAME_POINTER_IS_FRAME_POINTER)
+	    df_ref_record (DF_REF_BASE, collection_rec,
+			   regno_reg_rtx[HARD_FRAME_POINTER_REGNUM],
+			   NULL, bb, insn_info,
+			   DF_REF_REG_USE, 0);
           break;
         default:
           break;
@@ -3442,9 +3441,9 @@ df_get_regular_block_artificial_uses (bitmap regular_block_artificial_uses)
 	 reference of the frame pointer.  */
       bitmap_set_bit (regular_block_artificial_uses, FRAME_POINTER_REGNUM);
 
-#if !HARD_FRAME_POINTER_IS_FRAME_POINTER
-      bitmap_set_bit (regular_block_artificial_uses, HARD_FRAME_POINTER_REGNUM);
-#endif
+      if (!HARD_FRAME_POINTER_IS_FRAME_POINTER)
+	bitmap_set_bit (regular_block_artificial_uses,
+			HARD_FRAME_POINTER_REGNUM);
 
 #if FRAME_POINTER_REGNUM != ARG_POINTER_REGNUM
       /* Pseudos with argument area equivalences may require
@@ -3494,9 +3493,9 @@ df_get_eh_block_artificial_uses (bitmap eh_block_artificial_uses)
       if (frame_pointer_needed)
 	{
 	  bitmap_set_bit (eh_block_artificial_uses, FRAME_POINTER_REGNUM);
-#if !HARD_FRAME_POINTER_IS_FRAME_POINTER
-	  bitmap_set_bit (eh_block_artificial_uses, HARD_FRAME_POINTER_REGNUM);
-#endif
+	  if (!HARD_FRAME_POINTER_IS_FRAME_POINTER)
+	    bitmap_set_bit (eh_block_artificial_uses,
+			    HARD_FRAME_POINTER_REGNUM);
 	}
 #if FRAME_POINTER_REGNUM != ARG_POINTER_REGNUM
       if (fixed_regs[ARG_POINTER_REGNUM])
@@ -3580,11 +3579,11 @@ df_get_entry_block_def_set (bitmap entry_block_defs)
       /* Any reference to any pseudo before reload is a potential
 	 reference of the frame pointer.  */
       bitmap_set_bit (entry_block_defs, FRAME_POINTER_REGNUM);
-#if !HARD_FRAME_POINTER_IS_FRAME_POINTER
+
       /* If they are different, also mark the hard frame pointer as live.  */
-      if (!LOCAL_REGNO (HARD_FRAME_POINTER_REGNUM))
+      if (!HARD_FRAME_POINTER_IS_FRAME_POINTER
+	  && !LOCAL_REGNO (HARD_FRAME_POINTER_REGNUM))
 	bitmap_set_bit (entry_block_defs, HARD_FRAME_POINTER_REGNUM);
-#endif
     }
 
   /* These registers are live everywhere.  */
@@ -3718,11 +3717,11 @@ df_get_exit_block_use_set (bitmap exit_block_uses)
   if ((!reload_completed) || frame_pointer_needed)
     {
       bitmap_set_bit (exit_block_uses, FRAME_POINTER_REGNUM);
-#if !HARD_FRAME_POINTER_IS_FRAME_POINTER
+
       /* If they are different, also mark the hard frame pointer as live.  */
-      if (!LOCAL_REGNO (HARD_FRAME_POINTER_REGNUM))
+      if (!HARD_FRAME_POINTER_IS_FRAME_POINTER
+	  && !LOCAL_REGNO (HARD_FRAME_POINTER_REGNUM))
 	bitmap_set_bit (exit_block_uses, HARD_FRAME_POINTER_REGNUM);
-#endif
     }
 
   /* Many architectures have a GP register even without flag_pic.
diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c
index c1974bb..9b2c4ec 100644
--- a/gcc/emit-rtl.c
+++ b/gcc/emit-rtl.c
@@ -715,11 +715,11 @@ gen_rtx_REG (machine_mode mode, unsigned int regno)
       if (regno == FRAME_POINTER_REGNUM
 	  && (!reload_completed || frame_pointer_needed))
 	return frame_pointer_rtx;
-#if !HARD_FRAME_POINTER_IS_FRAME_POINTER
-      if (regno == HARD_FRAME_POINTER_REGNUM
+
+      if (!HARD_FRAME_POINTER_IS_FRAME_POINTER
+	  && regno == HARD_FRAME_POINTER_REGNUM
 	  && (!reload_completed || frame_pointer_needed))
 	return hard_frame_pointer_rtx;
-#endif
 #if FRAME_POINTER_REGNUM != ARG_POINTER_REGNUM && !HARD_FRAME_POINTER_IS_ARG_POINTER
       if (regno == ARG_POINTER_REGNUM)
 	return arg_pointer_rtx;
diff --git a/gcc/ira.c b/gcc/ira.c
index 0750d11..9dcbc62 100644
--- a/gcc/ira.c
+++ b/gcc/ira.c
@@ -2341,19 +2341,20 @@ ira_setup_eliminable_regset (void)
       else
 	df_set_regs_ever_live (eliminables[i].from, true);
     }
-#if !HARD_FRAME_POINTER_IS_FRAME_POINTER
-  if (!TEST_HARD_REG_BIT (crtl->asm_clobbers, HARD_FRAME_POINTER_REGNUM))
+  if (!HARD_FRAME_POINTER_IS_FRAME_POINTER)
     {
-      SET_HARD_REG_BIT (eliminable_regset, HARD_FRAME_POINTER_REGNUM);
-      if (frame_pointer_needed)
-	SET_HARD_REG_BIT (ira_no_alloc_regs, HARD_FRAME_POINTER_REGNUM);
+      if (!TEST_HARD_REG_BIT (crtl->asm_clobbers, HARD_FRAME_POINTER_REGNUM))
+	{
+	  SET_HARD_REG_BIT (eliminable_regset, HARD_FRAME_POINTER_REGNUM);
+	  if (frame_pointer_needed)
+	    SET_HARD_REG_BIT (ira_no_alloc_regs, HARD_FRAME_POINTER_REGNUM);
+	}
+      else if (frame_pointer_needed)
+	error ("%s cannot be used in asm here",
+	       reg_names[HARD_FRAME_POINTER_REGNUM]);
+      else
+	df_set_regs_ever_live (HARD_FRAME_POINTER_REGNUM, true);
     }
-  else if (frame_pointer_needed)
-    error ("%s cannot be used in asm here",
-	   reg_names[HARD_FRAME_POINTER_REGNUM]);
-  else
-    df_set_regs_ever_live (HARD_FRAME_POINTER_REGNUM, true);
-#endif
 
 #else
   if (!TEST_HARD_REG_BIT (crtl->asm_clobbers, HARD_FRAME_POINTER_REGNUM))
diff --git a/gcc/reginfo.c b/gcc/reginfo.c
index 9015eeb..bc528e9 100644
--- a/gcc/reginfo.c
+++ b/gcc/reginfo.c
@@ -470,10 +470,9 @@ init_reg_sets_1 (void)
 	}
       else if (i == FRAME_POINTER_REGNUM)
 	;
-#if !HARD_FRAME_POINTER_IS_FRAME_POINTER
-      else if (i == HARD_FRAME_POINTER_REGNUM)
+      else if (!HARD_FRAME_POINTER_IS_FRAME_POINTER
+	       && i == HARD_FRAME_POINTER_REGNUM)
 	;
-#endif
 #if ARG_POINTER_REGNUM != FRAME_POINTER_REGNUM
       else if (i == ARG_POINTER_REGNUM && fixed_regs[i])
 	;
diff --git a/gcc/regrename.c b/gcc/regrename.c
index f995ffa..147aaa8 100644
--- a/gcc/regrename.c
+++ b/gcc/regrename.c
@@ -438,9 +438,8 @@ rename_chains (void)
   if (frame_pointer_needed)
     {
       add_to_hard_reg_set (&unavailable, Pmode, FRAME_POINTER_REGNUM);
-#if !HARD_FRAME_POINTER_IS_FRAME_POINTER
-      add_to_hard_reg_set (&unavailable, Pmode, HARD_FRAME_POINTER_REGNUM);
-#endif
+      if (!HARD_FRAME_POINTER_IS_FRAME_POINTER)
+	add_to_hard_reg_set (&unavailable, Pmode, HARD_FRAME_POINTER_REGNUM);
     }
 
   FOR_EACH_VEC_ELT (id_to_chain, i, this_head)
diff --git a/gcc/reload1.c b/gcc/reload1.c
index 5a01045..82b106e 100644
--- a/gcc/reload1.c
+++ b/gcc/reload1.c
@@ -914,10 +914,9 @@ reload (rtx_insn *first, int global)
 	spill_hard_reg (from, 1);
     }
 
-#if !HARD_FRAME_POINTER_IS_FRAME_POINTER
-  if (frame_pointer_needed)
+  if (!HARD_FRAME_POINTER_IS_FRAME_POINTER && frame_pointer_needed)
     spill_hard_reg (HARD_FRAME_POINTER_REGNUM, 1);
-#endif
+
   finish_spills (global);
 
   /* From now on, we may need to generate moves differently.  We may also
@@ -3281,13 +3280,13 @@ eliminate_regs_in_insn (rtx_insn *insn, int replace)
       for (ep = reg_eliminate; ep < &reg_eliminate[NUM_ELIMINABLE_REGS]; ep++)
 	if (ep->from_rtx == SET_DEST (old_set) && ep->can_eliminate)
 	  {
-#if !HARD_FRAME_POINTER_IS_FRAME_POINTER
 	    /* If this is setting the frame pointer register to the
 	       hardware frame pointer register and this is an elimination
 	       that will be done (tested above), this insn is really
 	       adjusting the frame pointer downward to compensate for
 	       the adjustment done before a nonlocal goto.  */
-	    if (ep->from == FRAME_POINTER_REGNUM
+	    if (!HARD_FRAME_POINTER_IS_FRAME_POINTER
+		&& ep->from == FRAME_POINTER_REGNUM
 		&& ep->to == HARD_FRAME_POINTER_REGNUM)
 	      {
 		rtx base = SET_SRC (old_set);
@@ -3347,7 +3346,6 @@ eliminate_regs_in_insn (rtx_insn *insn, int replace)
 		    goto done;
 		  }
 	      }
-#endif
 
 	    /* In this case this insn isn't serving a useful purpose.  We
 	       will delete it in reload_as_needed once we know that this
diff --git a/gcc/resource.c b/gcc/resource.c
index 4f71aac..9a013b3 100644
--- a/gcc/resource.c
+++ b/gcc/resource.c
@@ -335,9 +335,8 @@ mark_referenced_resources (rtx x, struct resources *res,
 	  if (frame_pointer_needed)
 	    {
 	      SET_HARD_REG_BIT (res->regs, FRAME_POINTER_REGNUM);
-#if !HARD_FRAME_POINTER_IS_FRAME_POINTER
-	      SET_HARD_REG_BIT (res->regs, HARD_FRAME_POINTER_REGNUM);
-#endif
+	      if (!HARD_FRAME_POINTER_IS_FRAME_POINTER)
+		SET_HARD_REG_BIT (res->regs, HARD_FRAME_POINTER_REGNUM);
 	    }
 
 	  for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
@@ -1190,9 +1189,9 @@ init_resource_info (rtx_insn *epilogue_insn)
   if (frame_pointer_needed)
     {
       SET_HARD_REG_BIT (end_of_function_needs.regs, FRAME_POINTER_REGNUM);
-#if !HARD_FRAME_POINTER_IS_FRAME_POINTER
-      SET_HARD_REG_BIT (end_of_function_needs.regs, HARD_FRAME_POINTER_REGNUM);
-#endif
+      if (!HARD_FRAME_POINTER_IS_FRAME_POINTER)
+	SET_HARD_REG_BIT (end_of_function_needs.regs,
+			  HARD_FRAME_POINTER_REGNUM);
     }
   if (!(frame_pointer_needed
 	&& EXIT_IGNORE_STACK
-- 
2.3.0.80.g18d0fec.dirty

  reply	other threads:[~2015-04-21 13:25 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-04-21 13:25 [PATCH 00/12] Reduce conditional compilation tbsaunde+gcc
2015-04-21 13:25 ` tbsaunde+gcc [this message]
2015-04-21 13:37   ` [PATCH 08/12] reduce conditional compilation for HARD_FRAME_POINTER_IS_FRAME_POINTER Jeff Law
2015-04-21 13:25 ` [PATCH 05/12] make some HAVE_cc0 code always compiled tbsaunde+gcc
2015-04-21 13:54   ` Jeff Law
2015-04-21 13:25 ` [PATCH 10/12] remove more ifdefs for HAVE_cc0 tbsaunde+gcc
2015-04-21 13:55   ` Jeff Law
2015-04-21 13:25 ` [PATCH 09/12] remove #if for PIC_OFFSET_TABLE_REGNUM tbsaunde+gcc
2015-04-21 13:34   ` Jeff Law
2015-04-21 13:25 ` [PATCH 02/12] remove some ifdef HAVE_cc0 tbsaunde+gcc
2015-04-21 13:48   ` Jeff Law
2015-04-21 14:14   ` Richard Biener
2015-04-21 15:24     ` Trevor Saunders
2015-04-23  3:28       ` James Greenhalgh
2015-04-23  4:55         ` Trevor Saunders
2015-04-23  8:35           ` Richard Biener
2015-04-23  8:41             ` Kyrill Tkachov
2015-04-23  9:08               ` Richard Earnshaw
2015-04-23  9:58                 ` Kyrill Tkachov
2015-04-23 10:30                   ` Richard Biener
2015-04-23 12:01                   ` Trevor Saunders
2015-04-21 13:25 ` [PATCH 06/12] provide default for RETURN_ADDR_OFFSET tbsaunde+gcc
2015-04-21 13:32   ` Jeff Law
2015-04-21 13:25 ` [PATCH 01/12] add default definition of EH_RETURN_DATA_REGNO tbsaunde+gcc
2015-04-21 13:40   ` Jeff Law
2015-04-21 14:00     ` Jakub Jelinek
2015-04-21 14:04       ` Jeff Law
2015-04-21 13:25 ` [PATCH 07/12] provide default for MASK_RETURN_ADDR tbsaunde+gcc
2015-04-21 13:32   ` Jeff Law
2015-04-21 13:25 ` [PATCH 12/12] add default for INSN_REFERENCES_ARE_DELAYED tbsaunde+gcc
2015-04-21 13:30   ` Jeff Law
2015-04-21 13:25 ` [PATCH 04/12] always define HAVE_cc0 tbsaunde+gcc
2015-04-21 13:53   ` Jeff Law
2015-04-21 15:18     ` Trevor Saunders
2015-04-21 13:25 ` [PATCH 11/12] provide default for INSN_SETS_ARE_DELAYED tbsaunde+gcc
2015-04-21 13:31   ` Jeff Law
2015-04-21 13:25 ` [PATCH 03/12] more removal of ifdef HAVE_cc0 tbsaunde+gcc
2015-04-21 13:51   ` Jeff Law
2015-04-21 15:24     ` Trevor Saunders
2015-04-21 13:43 ` [PATCH 00/12] Reduce conditional compilation Jeff Law
2015-04-21 13:57 ` Jeff Law
2015-04-21 15:29   ` Trevor Saunders
2015-04-22 18:19     ` David Malcolm
2015-04-22 18:37       ` Jeff Law
2015-04-22 20:46         ` Trevor Saunders
2015-04-22 20:47           ` Jeff Law

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1429622658-9034-9-git-send-email-tbsaunde+gcc@tbsaunde.org \
    --to=tbsaunde+gcc@tbsaunde.org \
    --cc=gcc-patches@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).