This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH 01/12] reduce conditional compilation for HARD_FRAME_POINTER_IS_ARG_POINTER
- From: tbsaunde+gcc at tbsaunde dot org
- To: gcc-patches at gcc dot gnu dot org
- Date: Mon, 9 Nov 2015 11:47:38 -0500
- Subject: [PATCH 01/12] reduce conditional compilation for HARD_FRAME_POINTER_IS_ARG_POINTER
- Authentication-results: sourceware.org; auth=none
- References: <1447087669-14039-1-git-send-email-tbsaunde+gcc at tbsaunde dot org>
From: Trevor Saunders <tbsaunde+gcc@tbsaunde.org>
gcc/ChangeLog:
2015-11-09 Trevor Saunders <tbsaunde+gcc@tbsaunde.org>
* dbxout.c (dbxout_symbol_location): Remove #if for
HARD_FRAME_POINTER_IS_ARG_POINTER.
(dbxout_parms): Likewise.
* dwarf2out.c (rtl_for_decl_location): Likewise.
* emit-rtl.c (gen_rtx_REG): Likewise.
---
gcc/dbxout.c | 13 +++++--------
gcc/dwarf2out.c | 6 ++----
gcc/emit-rtl.c | 7 ++++---
3 files changed, 11 insertions(+), 15 deletions(-)
diff --git a/gcc/dbxout.c b/gcc/dbxout.c
index 1b4a5ea..5f4ea77 100644
--- a/gcc/dbxout.c
+++ b/gcc/dbxout.c
@@ -3076,10 +3076,8 @@ 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
- )))
+ && (HARD_FRAME_POINTER_IS_ARG_POINTER
+ || 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
@@ -3490,10 +3488,9 @@ 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
- )
+ && (HARD_FRAME_POINTER_IS_ARG_POINTER
+ || 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/dwarf2out.c b/gcc/dwarf2out.c
index f184750..c42da7e 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -16026,10 +16026,8 @@ 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
- )
+ || (!HARD_FRAME_POINTER_IS_ARG_POINTER
+ && 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 c6a37e1..3d2c6d9 100644
--- a/gcc/emit-rtl.c
+++ b/gcc/emit-rtl.c
@@ -716,11 +716,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_IS_ARG_POINTER
+ && 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;
--
2.5.0.rc1.5.gc07173f