* 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
+2009-05-03 Anatoly Sokolov <aesok@post.ru>
+
+ * 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 <rguenther@suse.de>
PR tree-optimization/39940
/* 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
/* 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
\f
/* 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
\f
/* 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}, \
{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.
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.
#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
/* 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
/* 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
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}}
/* 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
/* 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 }, \
#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
\f
/* Elimination */
-#define FRAME_POINTER_REQUIRED 0
-
#define ELIMINABLE_REGS \
{{ARG_POINTER_REGNUM, STACK_POINTER_REGNUM}, \
{ARG_POINTER_REGNUM, HARD_FRAME_POINTER_REGNUM}, \
\f
/* Eliminating the Frame Pointer and the Arg Pointer */
-#define FRAME_POINTER_REQUIRED 0
-
#define ELIMINABLE_REGS \
{ \
{FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM}, \
/* 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
#define GO_IF_MODE_DEPENDENT_ADDRESS(X, WIN)
#endif
+#ifndef FRAME_POINTER_REQUIRED
+#define FRAME_POINTER_REQUIRED false
+#endif
+
#endif /* ! GCC_DEFAULTS_H */
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
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