Commit 1dd4b7a8 by Stan Cox

(FRAME_POINTER_REQUIRED) Add -momit-leaf-frame-pointer

From-SVN: r9537
parent 17a2962c
...@@ -115,6 +115,7 @@ extern int null_prologue (); ...@@ -115,6 +115,7 @@ extern int null_prologue ();
extern int integer_ok_for_set (); extern int integer_ok_for_set ();
extern int m88k_debugger_offset (); extern int m88k_debugger_offset ();
extern void emit_bcnd (); extern void emit_bcnd ();
extern void expand_block_move (); extern void expand_block_move ();
extern void m88k_layout_frame (); extern void m88k_layout_frame ();
...@@ -197,15 +198,15 @@ extern char * reg_names[]; ...@@ -197,15 +198,15 @@ extern char * reg_names[];
Redefined in sysv4.h, and luna.h. */ Redefined in sysv4.h, and luna.h. */
#define VERSION_INFO1 "88open OCS/BCS, " #define VERSION_INFO1 "88open OCS/BCS, "
#ifndef VERSION_INFO2 #ifndef VERSION_INFO2
#define VERSION_INFO2 "$Revision: 1.61 $" #define VERSION_INFO2 "$Revision: 1.1.1.2.2.2 $"
#endif #endif
#ifndef VERSION_STRING #ifndef VERSION_STRING
#define VERSION_STRING version_string #define VERSION_STRING version_string
#ifdef __STDC__ #ifdef __STDC__
#define TM_RCS_ID "@(#)" __FILE__ " $Revision: 1.61 $ " __DATE__ #define TM_RCS_ID "@(#)" __FILE__ " $Revision: 1.1.1.2.2.2 $ " __DATE__
#else #else
#define TM_RCS_ID "$What$" #define TM_RCS_ID "$What: <@(#) m88k.h,v 1.1.1.2.2.2> $"
#endif /* __STDC__ */ #endif /* __STDC__ */
#else #else
#define TM_RCS_ID "@(#)" __FILE__ " " VERSION_INFO2 " " __DATE__ #define TM_RCS_ID "@(#)" __FILE__ " " VERSION_INFO2 " " __DATE__
...@@ -221,6 +222,8 @@ extern char * reg_names[]; ...@@ -221,6 +222,8 @@ extern char * reg_names[];
#define MASK_88100 0x00000001 /* Target m88100 */ #define MASK_88100 0x00000001 /* Target m88100 */
#define MASK_88110 0x00000002 /* Target m88110 */ #define MASK_88110 0x00000002 /* Target m88110 */
#define MASK_88000 (MASK_88100 | MASK_88110)
#define MASK_OCS_DEBUG_INFO 0x00000004 /* Emit .tdesc info */ #define MASK_OCS_DEBUG_INFO 0x00000004 /* Emit .tdesc info */
#define MASK_OCS_FRAME_POSITION 0x00000008 /* Debug frame = CFA, not r30 */ #define MASK_OCS_FRAME_POSITION 0x00000008 /* Debug frame = CFA, not r30 */
#define MASK_SVR4 0x00000010 /* Target is AT&T System V.4 */ #define MASK_SVR4 0x00000010 /* Target is AT&T System V.4 */
...@@ -235,10 +238,10 @@ extern char * reg_names[]; ...@@ -235,10 +238,10 @@ extern char * reg_names[];
#define MASK_WARN_PASS_STRUCT 0x00002000 /* Warn about passed structs */ #define MASK_WARN_PASS_STRUCT 0x00002000 /* Warn about passed structs */
#define MASK_OPTIMIZE_ARG_AREA 0x00004000 /* Save stack space */ #define MASK_OPTIMIZE_ARG_AREA 0x00004000 /* Save stack space */
#define MASK_NO_SERIALIZE_VOLATILE 0x00008000 /* Serialize volatile refs */ #define MASK_NO_SERIALIZE_VOLATILE 0x00008000 /* Serialize volatile refs */
#define MASK_88000 (MASK_88100 | MASK_88110)
#define MASK_EITHER_LARGE_SHIFT (MASK_TRAP_LARGE_SHIFT | \ #define MASK_EITHER_LARGE_SHIFT (MASK_TRAP_LARGE_SHIFT | \
MASK_HANDLE_LARGE_SHIFT) MASK_HANDLE_LARGE_SHIFT)
#define MASK_OMIT_LEAF_FRAME_POINTER 0x00020000 /* omit leaf frame pointers */
#define TARGET_88100 ((target_flags & MASK_88000) == MASK_88100) #define TARGET_88100 ((target_flags & MASK_88000) == MASK_88100)
#define TARGET_88110 ((target_flags & MASK_88000) == MASK_88110) #define TARGET_88110 ((target_flags & MASK_88000) == MASK_88110)
...@@ -260,6 +263,7 @@ extern char * reg_names[]; ...@@ -260,6 +263,7 @@ extern char * reg_names[];
#define TARGET_SERIALIZE_VOLATILE (!(target_flags & MASK_NO_SERIALIZE_VOLATILE)) #define TARGET_SERIALIZE_VOLATILE (!(target_flags & MASK_NO_SERIALIZE_VOLATILE))
#define TARGET_EITHER_LARGE_SHIFT (target_flags & MASK_EITHER_LARGE_SHIFT) #define TARGET_EITHER_LARGE_SHIFT (target_flags & MASK_EITHER_LARGE_SHIFT)
#define TARGET_OMIT_LEAF_FRAME_POINTER (target_flags & MASK_OMIT_LEAF_FRAME_POINTER)
/* Redefined in sysv3.h, sysv4.h, and dgux.h. */ /* Redefined in sysv3.h, sysv4.h, and dgux.h. */
#define TARGET_DEFAULT (MASK_CHECK_ZERO_DIV) #define TARGET_DEFAULT (MASK_CHECK_ZERO_DIV)
...@@ -289,6 +293,7 @@ extern char * reg_names[]; ...@@ -289,6 +293,7 @@ extern char * reg_names[];
{ "no-optimize-arg-area", -MASK_OPTIMIZE_ARG_AREA }, \ { "no-optimize-arg-area", -MASK_OPTIMIZE_ARG_AREA }, \
{ "no-serialize-volatile", MASK_NO_SERIALIZE_VOLATILE }, \ { "no-serialize-volatile", MASK_NO_SERIALIZE_VOLATILE }, \
{ "serialize-volatile", -MASK_NO_SERIALIZE_VOLATILE }, \ { "serialize-volatile", -MASK_NO_SERIALIZE_VOLATILE }, \
{ "omit-leaf-frame-pointer", MASK_OMIT_LEAF_FRAME_POINTER }, \
SUBTARGET_SWITCHES \ SUBTARGET_SWITCHES \
/* Default switches */ \ /* Default switches */ \
{ "", TARGET_DEFAULT }, \ { "", TARGET_DEFAULT }, \
...@@ -973,11 +978,10 @@ enum reg_class { NO_REGS, AP_REG, XRF_REGS, GENERAL_REGS, AGRF_REGS, ...@@ -973,11 +978,10 @@ enum reg_class { NO_REGS, AP_REG, XRF_REGS, GENERAL_REGS, AGRF_REGS,
/* Value is the number of bytes of arguments automatically /* Value is the number of bytes of arguments automatically
popped when returning from a subroutine call. popped when returning from a subroutine call.
FUNDECL is the declaration node of the function (as a tree),
FUNTYPE is the data type of the function (as a tree), FUNTYPE is the data type of the function (as a tree),
or for a library call it is an identifier node for the subroutine name. or for a library call it is an identifier node for the subroutine name.
SIZE is the number of bytes of arguments passed on the stack. */ SIZE is the number of bytes of arguments passed on the stack. */
#define RETURN_POPS_ARGS(FUNDECL,FUNTYPE,SIZE) 0 #define RETURN_POPS_ARGS(FUNTYPE,SIZE) 0
/* Define how to find the value returned by a function. /* Define how to find the value returned by a function.
VALTYPE is the data type of the value (as a tree). VALTYPE is the data type of the value (as a tree).
...@@ -1136,8 +1140,9 @@ enum reg_class { NO_REGS, AP_REG, XRF_REGS, GENERAL_REGS, AGRF_REGS, ...@@ -1136,8 +1140,9 @@ enum reg_class { NO_REGS, AP_REG, XRF_REGS, GENERAL_REGS, AGRF_REGS,
may be accessed via the stack pointer) in functions that seem suitable. may be accessed via the stack pointer) in functions that seem suitable.
This is computed in `reload', in reload1.c. */ This is computed in `reload', in reload1.c. */
#define FRAME_POINTER_REQUIRED \ #define FRAME_POINTER_REQUIRED \
(frame_pointer_needed \ (current_function_varargs \
|| (write_symbols != NO_DEBUG && !TARGET_OCS_FRAME_POSITION)) || (TARGET_OMIT_LEAF_FRAME_POINTER && !leaf_function_p ()) \
|| (write_symbols != NO_DEBUG && !TARGET_OCS_FRAME_POSITION))
/* Definitions for register eliminations. /* Definitions for register eliminations.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment