From: Trevor Saunders <tbsaunde+...@tbsaunde.org> gcc/ChangeLog:
2015-11-09 Trevor Saunders <tbsaunde+...@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