From a4efa7dcd66f6ebb3d055098c610590085cc1f15 Mon Sep 17 00:00:00 2001 From: aesok Date: Sun, 3 May 2009 11:25:20 +0000 Subject: [PATCH] * defaults.h (FRAME_POINTER_REQUIRED): Provide default. * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation. * config/alpha/alpha.h (FRAME_POINTER_REQUIRED): Delete. * config/s390/s390.h (FRAME_POINTER_REQUIRED): Delete. * config/spu/spu.h (FRAME_POINTER_REQUIRED): Delete. * config/sh/sh.h (FRAME_POINTER_REQUIRED): Delete. * config/pdp11/pdp11.h (FRAME_POINTER_REQUIRED): Delete. * config/stormy16/stormy16.h (FRAME_POINTER_REQUIRED): Delete. * config/m68hc11/m68hc11.h (FRAME_POINTER_REQUIRED): Delete. * config/iq2000/iq2000.h (FRAME_POINTER_REQUIRED): Delete. * config/mn10300/mn10300.h (FRAME_POINTER_REQUIRED): Delete. * config/ia64/ia64.h (FRAME_POINTER_REQUIRED): Delete. * config/m68k/m68k.h (FRAME_POINTER_REQUIRED): Delete. * config/rs6000/rs6000.h (FRAME_POINTER_REQUIRED): Delete. * config/picochip/picochip.h (FRAME_POINTER_REQUIRED): Delete. * config/mcore/mcore.h (FRAME_POINTER_REQUIRED): Delete. * config/h8300/h8300.h (FRAME_POINTER_REQUIRED): Delete. * config/v850/v850.h (FRAME_POINTER_REQUIRED): Delete. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@147072 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 21 +++++++++++++++++++++ gcc/config/alpha/alpha.h | 6 ------ gcc/config/h8300/h8300.h | 6 ------ gcc/config/ia64/ia64.h | 5 ----- gcc/config/iq2000/iq2000.h | 2 -- gcc/config/m68hc11/m68hc11.h | 6 ------ gcc/config/m68k/m68k.h | 2 -- gcc/config/mcore/mcore.h | 5 ----- gcc/config/mn10300/mn10300.h | 1 - gcc/config/pdp11/pdp11.h | 8 -------- gcc/config/picochip/picochip.h | 3 --- gcc/config/rs6000/rs6000.h | 6 ------ gcc/config/s390/s390.h | 2 -- gcc/config/sh/sh.h | 6 ------ gcc/config/spu/spu.h | 2 -- gcc/config/stormy16/stormy16.h | 2 -- gcc/config/v850/v850.h | 6 ------ gcc/defaults.h | 4 ++++ gcc/doc/tm.texi | 15 +++++++++------ 19 files changed, 34 insertions(+), 74 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0bba7cf..07a84d6 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,24 @@ +2009-05-03 Anatoly Sokolov + + * defaults.h (FRAME_POINTER_REQUIRED): Provide default. + * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation. + * config/alpha/alpha.h (FRAME_POINTER_REQUIRED): Delete. + * config/s390/s390.h (FRAME_POINTER_REQUIRED): Delete. + * config/spu/spu.h (FRAME_POINTER_REQUIRED): Delete. + * config/sh/sh.h (FRAME_POINTER_REQUIRED): Delete. + * config/pdp11/pdp11.h (FRAME_POINTER_REQUIRED): Delete. + * config/stormy16/stormy16.h (FRAME_POINTER_REQUIRED): Delete. + * config/m68hc11/m68hc11.h (FRAME_POINTER_REQUIRED): Delete. + * config/iq2000/iq2000.h (FRAME_POINTER_REQUIRED): Delete. + * config/mn10300/mn10300.h (FRAME_POINTER_REQUIRED): Delete. + * config/ia64/ia64.h (FRAME_POINTER_REQUIRED): Delete. + * config/m68k/m68k.h (FRAME_POINTER_REQUIRED): Delete. + * config/rs6000/rs6000.h (FRAME_POINTER_REQUIRED): Delete. + * config/picochip/picochip.h (FRAME_POINTER_REQUIRED): Delete. + * config/mcore/mcore.h (FRAME_POINTER_REQUIRED): Delete. + * config/h8300/h8300.h (FRAME_POINTER_REQUIRED): Delete. + * config/v850/v850.h (FRAME_POINTER_REQUIRED): Delete. + 2009-05-02 Richard Guenther PR tree-optimization/39940 diff --git a/gcc/config/alpha/alpha.h b/gcc/config/alpha/alpha.h index 4df3640..433823d 100644 --- a/gcc/config/alpha/alpha.h +++ b/gcc/config/alpha/alpha.h @@ -475,12 +475,6 @@ extern enum alpha_fp_trap_mode alpha_fptm; /* Base register for access to local variables of the function. */ #define HARD_FRAME_POINTER_REGNUM 15 -/* Value should be nonzero if functions must have frame pointers. - Zero means the frame pointer need not be set up (and parms - may be accessed via the stack pointer) in functions that seem suitable. - This is computed in `reload', in reload1.c. */ -#define FRAME_POINTER_REQUIRED 0 - /* Base register for access to arguments of the function. */ #define ARG_POINTER_REGNUM 31 diff --git a/gcc/config/h8300/h8300.h b/gcc/config/h8300/h8300.h index 701223e..7e37113 100644 --- a/gcc/config/h8300/h8300.h +++ b/gcc/config/h8300/h8300.h @@ -300,12 +300,6 @@ extern const char * const *h8_reg_names; /* Base register for access to local variables of the function. */ #define FRAME_POINTER_REGNUM FP_REG -/* Value should be nonzero if functions must have frame pointers. - Zero means the frame pointer need not be set up (and parms - may be accessed via the stack pointer) in functions that seem suitable. - This is computed in `reload', in reload1.c. */ -#define FRAME_POINTER_REQUIRED 0 - /* Base register for access to arguments of the function. */ #define ARG_POINTER_REGNUM AP_REG diff --git a/gcc/config/ia64/ia64.h b/gcc/config/ia64/ia64.h index 74e5078..05957ea 100644 --- a/gcc/config/ia64/ia64.h +++ b/gcc/config/ia64/ia64.h @@ -1005,11 +1005,6 @@ enum reg_class /* Eliminating the Frame Pointer and the Arg Pointer */ -/* A C expression which is nonzero if a function must have and use a frame - pointer. This expression is evaluated in the reload pass. If its value is - nonzero the function will have a frame pointer. */ -#define FRAME_POINTER_REQUIRED 0 - /* Show we can debug even without a frame pointer. */ #define CAN_DEBUG_WITHOUT_FP diff --git a/gcc/config/iq2000/iq2000.h b/gcc/config/iq2000/iq2000.h index 916e406..acbe569 100644 --- a/gcc/config/iq2000/iq2000.h +++ b/gcc/config/iq2000/iq2000.h @@ -345,8 +345,6 @@ enum reg_class /* Eliminating the Frame Pointer and the Arg Pointer. */ -#define FRAME_POINTER_REQUIRED 0 - #define ELIMINABLE_REGS \ {{ ARG_POINTER_REGNUM, STACK_POINTER_REGNUM}, \ { ARG_POINTER_REGNUM, HARD_FRAME_POINTER_REGNUM}, \ diff --git a/gcc/config/m68hc11/m68hc11.h b/gcc/config/m68hc11/m68hc11.h index ee28bb7..5496640 100644 --- a/gcc/config/m68hc11/m68hc11.h +++ b/gcc/config/m68hc11/m68hc11.h @@ -883,12 +883,6 @@ extern enum reg_class m68hc11_tmp_regs_class; {FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM}, \ {FRAME_POINTER_REGNUM, HARD_FRAME_POINTER_REGNUM}} -/* Value should be nonzero if functions must have frame pointers. - Zero means the frame pointer need not be set up (and parms may be - accessed via the stack pointer) in functions that seem suitable. - This is computed in `reload', in reload1.c. */ -#define FRAME_POINTER_REQUIRED 0 - /* Given FROM and TO register numbers, say whether this elimination is allowed. Frame pointer elimination is automatically handled. diff --git a/gcc/config/m68k/m68k.h b/gcc/config/m68k/m68k.h index bb28e88..11477c6 100644 --- a/gcc/config/m68k/m68k.h +++ b/gcc/config/m68k/m68k.h @@ -453,8 +453,6 @@ along with GCC; see the file COPYING3. If not see pointer is shifted to %a5 on this target. */ #define FRAME_POINTER_REGNUM A6_REG -#define FRAME_POINTER_REQUIRED 0 - /* Base register for access to arguments of the function. * This isn't a hardware register. It will be eliminated to the * stack pointer or frame pointer. diff --git a/gcc/config/mcore/mcore.h b/gcc/config/mcore/mcore.h index 224491a..bbdc248 100644 --- a/gcc/config/mcore/mcore.h +++ b/gcc/config/mcore/mcore.h @@ -303,11 +303,6 @@ extern int mcore_stack_increment; #define MODES_TIEABLE_P(MODE1, MODE2) \ ((MODE1) == (MODE2) || GET_MODE_CLASS (MODE1) == GET_MODE_CLASS (MODE2)) -/* Value should be nonzero if functions must have frame pointers. - Zero means the frame pointer need not be set up (and parms may be accessed - via the stack pointer) in functions that seem suitable. */ -#define FRAME_POINTER_REQUIRED 0 - /* Definitions for register eliminations. We have two registers that can be eliminated on the MCore. First, the diff --git a/gcc/config/mn10300/mn10300.h b/gcc/config/mn10300/mn10300.h index b6486d9..2737d15 100644 --- a/gcc/config/mn10300/mn10300.h +++ b/gcc/config/mn10300/mn10300.h @@ -491,7 +491,6 @@ enum reg_class { /* We can debug without frame pointers on the mn10300, so eliminate them whenever possible. */ -#define FRAME_POINTER_REQUIRED 0 #define CAN_DEBUG_WITHOUT_FP /* Value is the number of bytes of arguments automatically diff --git a/gcc/config/pdp11/pdp11.h b/gcc/config/pdp11/pdp11.h index 285b0e9..9dbb41e 100644 --- a/gcc/config/pdp11/pdp11.h +++ b/gcc/config/pdp11/pdp11.h @@ -246,14 +246,6 @@ extern const struct real_format pdp11_d_format; /* Base register for access to local variables of the function. */ #define FRAME_POINTER_REGNUM 5 -/* Value should be nonzero if functions must have frame pointers. - Zero means the frame pointer need not be set up (and parms - may be accessed via the stack pointer) in functions that seem suitable. - This is computed in `reload', in reload1.c. - */ - -#define FRAME_POINTER_REQUIRED 0 - /* Base register for access to arguments of the function. */ #define ARG_POINTER_REGNUM 5 diff --git a/gcc/config/picochip/picochip.h b/gcc/config/picochip/picochip.h index 24613d6..497c130 100644 --- a/gcc/config/picochip/picochip.h +++ b/gcc/config/picochip/picochip.h @@ -409,9 +409,6 @@ extern const enum reg_class picochip_regno_reg_class[FIRST_PSEUDO_REGISTER]; pointers are eliminated wherever possible, by replacing them with offsets from the stack pointer. */ -/* We want to get rid of the frame pointer. */ -#define FRAME_POINTER_REQUIRED 0 - #define ELIMINABLE_REGS \ {{ARG_POINTER_REGNUM, STACK_POINTER_REGNUM}, \ {FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM}} diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h index 187fe31..5feae4d 100644 --- a/gcc/config/rs6000/rs6000.h +++ b/gcc/config/rs6000/rs6000.h @@ -1027,12 +1027,6 @@ extern int rs6000_xilinx_fpu; /* Base register for access to local variables of the function. */ #define FRAME_POINTER_REGNUM 113 -/* Value should be nonzero if functions must have frame pointers. - Zero means the frame pointer need not be set up (and parms - may be accessed via the stack pointer) in functions that seem suitable. - This is computed in `reload', in reload1.c. */ -#define FRAME_POINTER_REQUIRED 0 - /* Base register for access to arguments of the function. */ #define ARG_POINTER_REGNUM 67 diff --git a/gcc/config/s390/s390.h b/gcc/config/s390/s390.h index a21bc72..c62f6bf 100644 --- a/gcc/config/s390/s390.h +++ b/gcc/config/s390/s390.h @@ -644,8 +644,6 @@ extern const enum reg_class regclass_map[FIRST_PSEUDO_REGISTER]; /* Frame pointer and argument pointer elimination. */ -#define FRAME_POINTER_REQUIRED 0 - #define ELIMINABLE_REGS \ {{ FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM }, \ { FRAME_POINTER_REGNUM, HARD_FRAME_POINTER_REGNUM }, \ diff --git a/gcc/config/sh/sh.h b/gcc/config/sh/sh.h index 51c7edf..5f5006f 100644 --- a/gcc/config/sh/sh.h +++ b/gcc/config/sh/sh.h @@ -1262,12 +1262,6 @@ extern char sh_additional_register_names[ADDREGNAMES_SIZE] \ #define GOT_SYMBOL_NAME "*_GLOBAL_OFFSET_TABLE_" -/* Value should be nonzero if functions must have frame pointers. - Zero means the frame pointer need not be set up (and parms may be accessed - via the stack pointer) in functions that seem suitable. */ - -#define FRAME_POINTER_REQUIRED 0 - /* Definitions for register eliminations. We have three registers that can be eliminated on the SH. First, the diff --git a/gcc/config/spu/spu.h b/gcc/config/spu/spu.h index 8780d1b..f8375f1 100644 --- a/gcc/config/spu/spu.h +++ b/gcc/config/spu/spu.h @@ -314,8 +314,6 @@ targetm.resolve_overloaded_builtin = spu_resolve_overloaded_builtin; \ /* Elimination */ -#define FRAME_POINTER_REQUIRED 0 - #define ELIMINABLE_REGS \ {{ARG_POINTER_REGNUM, STACK_POINTER_REGNUM}, \ {ARG_POINTER_REGNUM, HARD_FRAME_POINTER_REGNUM}, \ diff --git a/gcc/config/stormy16/stormy16.h b/gcc/config/stormy16/stormy16.h index 2a73381..675b94d 100644 --- a/gcc/config/stormy16/stormy16.h +++ b/gcc/config/stormy16/stormy16.h @@ -367,8 +367,6 @@ enum reg_class /* Eliminating the Frame Pointer and the Arg Pointer */ -#define FRAME_POINTER_REQUIRED 0 - #define ELIMINABLE_REGS \ { \ {FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM}, \ diff --git a/gcc/config/v850/v850.h b/gcc/config/v850/v850.h index 79c293a..b841963 100644 --- a/gcc/config/v850/v850.h +++ b/gcc/config/v850/v850.h @@ -506,12 +506,6 @@ enum reg_class /* Register in which static-chain is passed to a function. */ #define STATIC_CHAIN_REGNUM 20 -/* Value should be nonzero if functions must have frame pointers. - Zero means the frame pointer need not be set up (and parms - may be accessed via the stack pointer) in functions that seem suitable. - This is computed in `reload', in reload1.c. */ -#define FRAME_POINTER_REQUIRED 0 - /* If defined, this macro specifies a table of register pairs used to eliminate unneeded registers that point into the stack frame. If it is not defined, the only elimination attempted by the compiler diff --git a/gcc/defaults.h b/gcc/defaults.h index 53ba930..0be7057 100644 --- a/gcc/defaults.h +++ b/gcc/defaults.h @@ -969,4 +969,8 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see #define GO_IF_MODE_DEPENDENT_ADDRESS(X, WIN) #endif +#ifndef FRAME_POINTER_REQUIRED +#define FRAME_POINTER_REQUIRED false +#endif + #endif /* ! GCC_DEFAULTS_H */ diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi index 3e708cc..4765cf6 100644 --- a/gcc/doc/tm.texi +++ b/gcc/doc/tm.texi @@ -3738,15 +3738,16 @@ return @code{@var{regno}}. This is about eliminating the frame pointer and arg pointer. @defmac FRAME_POINTER_REQUIRED -A C expression which is nonzero if a function must have and use a frame +A C expression which is @code{true} if a function must have and use a frame pointer. This expression is evaluated in the reload pass. If its value is -nonzero the function will have a frame pointer. +@code{true} the function will have a frame pointer. The expression can in principle examine the current function and decide -according to the facts, but on most machines the constant 0 or the -constant 1 suffices. Use 0 when the machine allows code to be generated -with no frame pointer, and doing so saves some time or space. Use 1 -when there is no possible advantage to avoiding a frame pointer. +according to the facts, but on most machines the constant @code{false} or the +constant @code{true} suffices. Use @code{false} when the machine allows code +to be generated with no frame pointer, and doing so saves some time or space. +Use @code{true} when there is no possible advantage to avoiding a frame +pointer. In certain cases, the compiler does not know how to produce valid code without a frame pointer. The compiler recognizes those cases and @@ -3757,6 +3758,8 @@ them. In a function that does not require a frame pointer, the frame pointer register can be allocated for ordinary usage, unless you mark it as a fixed register. See @code{FIXED_REGISTERS} for more information. + +Default value is @code{false}. @end defmac @findex get_frame_size -- 2.7.4