From: Trevor Saunders <tbsaunde+...@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+...@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