[PATCH] remove HARD_FRAME_POINTER_IS_ARG_POINTER macro

tbsaunde+gcc@tbsaunde.org tbsaunde+gcc@tbsaunde.org
Sat Aug 20 16:59:00 GMT 2016


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

Hi,

its kind of silly, and this allows us to remove a few more #ifdefs.

bootstrapped + regtest x86_64-linux-gnu, ok?

Trev

gcc/ChangeLog:

2016-08-20  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>

	* rtl.h (HARD_FRAME_POINTER_IS_ARG_POINTER): Remove definition.
	(enum global_rtl_index): Adjust.
	* builtins.c (expand_builtin_setjmp_receiver): Likewise.
	* config/arm/arm.h: Likewise.
	* config/mips/mips.h: Likewise.
	* dbxout.c (dbxout_symbol_location): Likewise.
	(dbxout_parms): Likewise.
	* doc/tm.texi: Regenerate.
	* doc/tm.texi.in: Adjust.
	* dse.c (scan_insn): Likewise.
	* dwarf2out.c (rtl_for_decl_location): Likewise.
	* emit-rtl.c (gen_rtx_REG): Likewise.
---
 gcc/builtins.c         |  3 ++-
 gcc/config/arm/arm.h   |  1 -
 gcc/config/mips/mips.h |  1 -
 gcc/dbxout.c           | 10 ++--------
 gcc/doc/tm.texi        |  8 --------
 gcc/doc/tm.texi.in     |  8 --------
 gcc/dse.c              |  2 +-
 gcc/dwarf2out.c        |  5 +----
 gcc/emit-rtl.c         |  7 ++++---
 gcc/rtl.h              |  7 +------
 10 files changed, 11 insertions(+), 41 deletions(-)

diff --git a/gcc/builtins.c b/gcc/builtins.c
index 03a0dc8..657fb74 100644
--- a/gcc/builtins.c
+++ b/gcc/builtins.c
@@ -859,7 +859,8 @@ expand_builtin_setjmp_receiver (rtx receiver_label)
       emit_clobber (hard_frame_pointer_rtx);
     }
 
-  if (!HARD_FRAME_POINTER_IS_ARG_POINTER && fixed_regs[ARG_POINTER_REGNUM])
+  if (HARD_FRAME_POINTER_REGNUM!= ARG_POINTER_REGNUM
+      && fixed_regs[ARG_POINTER_REGNUM])
     {
 #ifdef ELIMINABLE_REGS
       /* If the argument pointer can be eliminated in favor of the
diff --git a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h
index c7149d1..352d859 100644
--- a/gcc/config/arm/arm.h
+++ b/gcc/config/arm/arm.h
@@ -916,7 +916,6 @@ extern int arm_arch_crc;
    : THUMB_HARD_FRAME_POINTER_REGNUM)
 
 #define HARD_FRAME_POINTER_IS_FRAME_POINTER 0
-#define HARD_FRAME_POINTER_IS_ARG_POINTER 0
 
 #define FP_REGNUM	                HARD_FRAME_POINTER_REGNUM
 
diff --git a/gcc/config/mips/mips.h b/gcc/config/mips/mips.h
index e8897d1..7b71fe3 100644
--- a/gcc/config/mips/mips.h
+++ b/gcc/config/mips/mips.h
@@ -1967,7 +1967,6 @@ FP_ASM_SPEC "\
   (TARGET_MIPS16 ? GP_REG_FIRST + 17 : GP_REG_FIRST + 30)
 
 #define HARD_FRAME_POINTER_IS_FRAME_POINTER 0
-#define HARD_FRAME_POINTER_IS_ARG_POINTER 0
 
 /* Register in which static-chain is passed to a function.  */
 #define STATIC_CHAIN_REGNUM (GP_REG_FIRST + 15)
diff --git a/gcc/dbxout.c b/gcc/dbxout.c
index ad256c7..9d6ecf3 100644
--- a/gcc/dbxout.c
+++ b/gcc/dbxout.c
@@ -3078,10 +3078,7 @@ dbxout_symbol_location (tree decl, tree type, const char *suffix, rtx home)
 	       || (REG_P (XEXP (home, 0))
 		   && REGNO (XEXP (home, 0)) != HARD_FRAME_POINTER_REGNUM
 		   && REGNO (XEXP (home, 0)) != STACK_POINTER_REGNUM
-#if !HARD_FRAME_POINTER_IS_ARG_POINTER
-		   && REGNO (XEXP (home, 0)) != ARG_POINTER_REGNUM
-#endif
-		   )))
+		   && REGNO (XEXP (home, 0)) != ARG_POINTER_REGNUM)))
     /* If the value is indirect by memory or by a register
        that isn't the frame pointer
        then it means the object is variable-sized and address through
@@ -3492,10 +3489,7 @@ dbxout_parms (tree parms)
 		 && REG_P (XEXP (DECL_RTL (parms), 0))
 		 && REGNO (XEXP (DECL_RTL (parms), 0)) != HARD_FRAME_POINTER_REGNUM
 		 && REGNO (XEXP (DECL_RTL (parms), 0)) != STACK_POINTER_REGNUM
-#if !HARD_FRAME_POINTER_IS_ARG_POINTER
-		 && REGNO (XEXP (DECL_RTL (parms), 0)) != ARG_POINTER_REGNUM
-#endif
-		 )
+		 && REGNO (XEXP (DECL_RTL (parms), 0)) != ARG_POINTER_REGNUM)
 	  {
 	    /* Parm was passed via invisible reference.
 	       That is, its address was passed in a register.
diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi
index 9edb006..129ca82 100644
--- a/gcc/doc/tm.texi
+++ b/gcc/doc/tm.texi
@@ -3472,14 +3472,6 @@ the same.  The default definition is @samp{(HARD_FRAME_POINTER_REGNUM
 definition is not suitable for use in preprocessor conditionals.
 @end defmac
 
-@defmac HARD_FRAME_POINTER_IS_ARG_POINTER
-Define this to a preprocessor constant that is nonzero if
-@code{hard_frame_pointer_rtx} and @code{arg_pointer_rtx} should be the
-same.  The default definition is @samp{(HARD_FRAME_POINTER_REGNUM ==
-ARG_POINTER_REGNUM)}; you only need to define this macro if that
-definition is not suitable for use in preprocessor conditionals.
-@end defmac
-
 @defmac RETURN_ADDRESS_POINTER_REGNUM
 The register number of the return address pointer register, which is used to
 access the current function's return address from the stack.  On some
diff --git a/gcc/doc/tm.texi.in b/gcc/doc/tm.texi.in
index a72c3d8..0adde80 100644
--- a/gcc/doc/tm.texi.in
+++ b/gcc/doc/tm.texi.in
@@ -3058,14 +3058,6 @@ the same.  The default definition is @samp{(HARD_FRAME_POINTER_REGNUM
 definition is not suitable for use in preprocessor conditionals.
 @end defmac
 
-@defmac HARD_FRAME_POINTER_IS_ARG_POINTER
-Define this to a preprocessor constant that is nonzero if
-@code{hard_frame_pointer_rtx} and @code{arg_pointer_rtx} should be the
-same.  The default definition is @samp{(HARD_FRAME_POINTER_REGNUM ==
-ARG_POINTER_REGNUM)}; you only need to define this macro if that
-definition is not suitable for use in preprocessor conditionals.
-@end defmac
-
 @defmac RETURN_ADDRESS_POINTER_REGNUM
 The register number of the return address pointer register, which is used to
 access the current function's return address from the stack.  On some
diff --git a/gcc/dse.c b/gcc/dse.c
index 17312c5..7dcfe6c 100644
--- a/gcc/dse.c
+++ b/gcc/dse.c
@@ -2304,7 +2304,7 @@ scan_insn (bb_info_t bb_info, rtx_insn *insn)
 		 even before reload we need to kill frame pointer based
 		 stores.  */
 	      || (SIBLING_CALL_P (insn)
-		  && HARD_FRAME_POINTER_IS_ARG_POINTER))
+		  && HARD_FRAME_POINTER_REGNUM == ARG_POINTER_REGNUM))
 	    insn_info->frame_read = true;
 
 	  /* Loop over the active stores and remove those which are
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index 1290b96..f0f261b 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -17532,10 +17532,7 @@ rtl_for_decl_location (tree decl)
 	       && (!REG_P (XEXP (rtl, 0))
 		   || REGNO (XEXP (rtl, 0)) == HARD_FRAME_POINTER_REGNUM
 		   || REGNO (XEXP (rtl, 0)) == STACK_POINTER_REGNUM
-#if !HARD_FRAME_POINTER_IS_ARG_POINTER
-		   || REGNO (XEXP (rtl, 0)) == ARG_POINTER_REGNUM
-#endif
-		     )
+		   || REGNO (XEXP (rtl, 0)) == ARG_POINTER_REGNUM)
 	       /* Big endian correction check.  */
 	       && BYTES_BIG_ENDIAN
 	       && TYPE_MODE (TREE_TYPE (decl)) != GET_MODE (rtl)
diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c
index 99f052d..a8a23ae 100644
--- a/gcc/emit-rtl.c
+++ b/gcc/emit-rtl.c
@@ -717,11 +717,12 @@ gen_rtx_REG (machine_mode mode, unsigned int regno)
 	  && regno == HARD_FRAME_POINTER_REGNUM
 	  && (!reload_completed || frame_pointer_needed))
 	return hard_frame_pointer_rtx;
-#if !HARD_FRAME_POINTER_IS_ARG_POINTER
-      if (FRAME_POINTER_REGNUM != ARG_POINTER_REGNUM
+
+      if (HARD_FRAME_POINTER_REGNUM != ARG_POINTER_REGNUM
+	  && FRAME_POINTER_REGNUM != ARG_POINTER_REGNUM
 	  && regno == ARG_POINTER_REGNUM)
 	return arg_pointer_rtx;
-#endif
+
 #ifdef RETURN_ADDRESS_POINTER_REGNUM
       if (regno == RETURN_ADDRESS_POINTER_REGNUM)
 	return return_address_pointer_rtx;
diff --git a/gcc/rtl.h b/gcc/rtl.h
index b531ab7..176dfb1 100644
--- a/gcc/rtl.h
+++ b/gcc/rtl.h
@@ -3172,11 +3172,6 @@ extern GTY(()) rtx_insn *invalid_insn_rtx;
   (HARD_FRAME_POINTER_REGNUM == FRAME_POINTER_REGNUM)
 #endif
 
-#ifndef HARD_FRAME_POINTER_IS_ARG_POINTER
-#define HARD_FRAME_POINTER_IS_ARG_POINTER \
-  (HARD_FRAME_POINTER_REGNUM == ARG_POINTER_REGNUM)
-#endif
-
 /* Index labels for global_rtl.  */
 enum global_rtl_index
 {
@@ -3194,7 +3189,7 @@ enum global_rtl_index
   GR_HARD_FRAME_POINTER,
 #endif
 #if FRAME_POINTER_REGNUM != ARG_POINTER_REGNUM
-#if HARD_FRAME_POINTER_IS_ARG_POINTER
+#if HARD_FRAME_POINTER_REGNUM == ARG_POINTER_REGNUM
   GR_ARG_POINTER = GR_HARD_FRAME_POINTER,
 #else
   GR_ARG_POINTER,
-- 
2.9.0



More information about the Gcc-patches mailing list