Commit a061b9fa by Doug Evans

(FRAME_POINTER_REQUIRED): Require frame pointer if

non-leaf flat function.

From-SVN: r8309
parent af432130
...@@ -710,12 +710,14 @@ extern int sparc_mode_class[]; ...@@ -710,12 +710,14 @@ extern int sparc_mode_class[];
Zero means the frame pointer need not be set up (and parms Zero means the frame pointer need not be set up (and parms
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.
Used in flow.c, global.c, and reload1.c.
Used in flow.c, global.c, and reload1.c. */ Being a non-leaf function does not mean a frame pointer is needed in the
extern int leaf_function; flat window model. However, the debugger won't be able to backtrace through
us with out it. */
#define FRAME_POINTER_REQUIRED \ #define FRAME_POINTER_REQUIRED \
(TARGET_FRW ? (current_function_calls_alloca || current_function_varargs) \ (TARGET_FRW ? (current_function_calls_alloca || current_function_varargs \
|| !leaf_function_p ()) \
: ! (leaf_function_p () && only_leaf_regs_used ())) : ! (leaf_function_p () && only_leaf_regs_used ()))
/* C statement to store the difference between the frame pointer /* C statement to store the difference between the frame pointer
...@@ -1515,6 +1517,7 @@ do { \ ...@@ -1515,6 +1517,7 @@ do { \
to do a "save" insn. The decision about whether or not to do a "save" insn. The decision about whether or not
to do this is made in regclass.c. */ to do this is made in regclass.c. */
extern int leaf_function;
#define FUNCTION_PROLOGUE(FILE, SIZE) \ #define FUNCTION_PROLOGUE(FILE, SIZE) \
(TARGET_FRW ? sparc_flat_output_function_prologue (FILE, SIZE) \ (TARGET_FRW ? sparc_flat_output_function_prologue (FILE, SIZE) \
: output_function_prologue (FILE, SIZE, leaf_function)) : output_function_prologue (FILE, SIZE, leaf_function))
......
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