flow.c (EXIT_IGNORE_STACK): Move to ...

* flow.c (EXIT_IGNORE_STACK): Move to ...
	* defaults.h (EXIT_IGNORE_STACK): ... here.
	* dojump.c (clear_pending_stack_adjust): Don't use #ifdef
	EXIT_IGNORE_STACK.
	* function.c (expand_function_end): Likewise.
	* global.c (global_alloc): Likewise.
	* ra.c (init_ra): Likewise.
	* reload1.c (init_elim_table): Likewise.
	* reorg.c (fill_simple_delay_slots): Likewise.
	* resource.c (init_resource_info): Likewise.
	* doc/tm.texi (EXIT_IGNORE_STACK): Document that the default
	is 0.

From-SVN: r74654
This commit is contained in:
Kazu Hirata 2003-12-16 00:06:36 +00:00 committed by Kazu Hirata
parent cbc278f440
commit 9d05bbceb2
11 changed files with 31 additions and 30 deletions

View File

@ -1,3 +1,18 @@
2003-12-15 Kazu Hirata <kazu@cs.umass.edu>
* flow.c (EXIT_IGNORE_STACK): Move to ...
* defaults.h (EXIT_IGNORE_STACK): ... here.
* dojump.c (clear_pending_stack_adjust): Don't use #ifdef
EXIT_IGNORE_STACK.
* function.c (expand_function_end): Likewise.
* global.c (global_alloc): Likewise.
* ra.c (init_ra): Likewise.
* reload1.c (init_elim_table): Likewise.
* reorg.c (fill_simple_delay_slots): Likewise.
* resource.c (init_resource_info): Likewise.
* doc/tm.texi (EXIT_IGNORE_STACK): Document that the default
is 0.
2003-12-15 J"orn Rennecke <joern.rennecke@superh.com>
* reload.c (reg_overlap_mentioned_for_reload_p):

View File

@ -689,4 +689,11 @@ You Lose! You must define PREFERRED_DEBUGGING_TYPE!
#define LOCAL_REGNO(REGNO) 0
#endif
/* EXIT_IGNORE_STACK should be nonzero if, when returning from a function,
the stack pointer does not matter. The value is tested only in
functions that have frame pointers. */
#ifndef EXIT_IGNORE_STACK
#define EXIT_IGNORE_STACK 0
#endif
#endif /* ! GCC_DEFAULTS_H */

View File

@ -4196,7 +4196,8 @@ function.
Define this macro as a C expression that is nonzero if the return
instruction or the function epilogue ignores the value of the stack
pointer; in other words, if it is safe to delete an instruction to
adjust the stack pointer before a return from the function.
adjust the stack pointer before a return from the function. The
default is 0.
Note that this macro's value is relevant only for functions for which
frame pointers are maintained. It is never safe to delete a final

View File

@ -57,7 +57,6 @@ init_pending_stack_adjust (void)
void
clear_pending_stack_adjust (void)
{
#ifdef EXIT_IGNORE_STACK
if (optimize > 0
&& (! flag_omit_frame_pointer || current_function_calls_alloca)
&& EXIT_IGNORE_STACK
@ -67,7 +66,6 @@ clear_pending_stack_adjust (void)
stack_pointer_delta -= pending_stack_adjust,
pending_stack_adjust = 0;
}
#endif
}
/* Pop any previously-pushed arguments that have not been popped yet. */

View File

@ -141,14 +141,6 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "obstack.h"
#include "splay-tree.h"
/* EXIT_IGNORE_STACK should be nonzero if, when returning from a function,
the stack pointer does not matter. The value is tested only in
functions that have frame pointers.
No definition is equivalent to always zero. */
#ifndef EXIT_IGNORE_STACK
#define EXIT_IGNORE_STACK 0
#endif
#ifndef HAVE_epilogue
#define HAVE_epilogue 0
#endif

View File

@ -7038,16 +7038,14 @@ expand_function_end (void)
/* If we had calls to alloca, and this machine needs
an accurate stack pointer to exit the function,
insert some code to save and restore the stack pointer. */
#ifdef EXIT_IGNORE_STACK
if (! EXIT_IGNORE_STACK)
#endif
if (current_function_calls_alloca)
{
rtx tem = 0;
if (! EXIT_IGNORE_STACK
&& current_function_calls_alloca)
{
rtx tem = 0;
emit_stack_save (SAVE_FUNCTION, &tem, parm_birth_insn);
emit_stack_restore (SAVE_FUNCTION, tem, NULL_RTX);
}
emit_stack_save (SAVE_FUNCTION, &tem, parm_birth_insn);
emit_stack_restore (SAVE_FUNCTION, tem, NULL_RTX);
}
/* If scalar return value was computed in a pseudo-reg, or was a named
return value that got dumped to the stack, copy that to the hard

View File

@ -323,9 +323,7 @@ global_alloc (FILE *file)
#endif
int need_fp
= (! flag_omit_frame_pointer
#ifdef EXIT_IGNORE_STACK
|| (current_function_calls_alloca && EXIT_IGNORE_STACK)
#endif
|| FRAME_POINTER_REQUIRED);
size_t i;

View File

@ -455,9 +455,7 @@ init_ra (void)
#endif
int need_fp
= (! flag_omit_frame_pointer
#ifdef EXIT_IGNORE_STACK
|| (current_function_calls_alloca && EXIT_IGNORE_STACK)
#endif
|| FRAME_POINTER_REQUIRED);
ra_colorize_init ();

View File

@ -3443,7 +3443,6 @@ init_elim_table (void)
/* Does this function require a frame pointer? */
frame_pointer_needed = (! flag_omit_frame_pointer
#ifdef EXIT_IGNORE_STACK
/* ?? If EXIT_IGNORE_STACK is set, we will not save
and restore sp for alloca. So we can't eliminate
the frame pointer in that case. At some point,
@ -3451,7 +3450,6 @@ init_elim_table (void)
sp-adjusting insns for this case. */
|| (current_function_calls_alloca
&& EXIT_IGNORE_STACK)
#endif
|| FRAME_POINTER_REQUIRED);
num_eliminable = 0;

View File

@ -2427,10 +2427,8 @@ fill_simple_delay_slots (int non_jumps_p)
#if HARD_FRAME_POINTER_REGNUM != FRAME_POINTER_REGNUM
SET_HARD_REG_BIT (needed.regs, HARD_FRAME_POINTER_REGNUM);
#endif
#ifdef EXIT_IGNORE_STACK
if (! EXIT_IGNORE_STACK
|| current_function_sp_is_unchanging)
#endif
SET_HARD_REG_BIT (needed.regs, STACK_POINTER_REGNUM);
}
else

View File

@ -1167,10 +1167,8 @@ init_resource_info (rtx epilogue_insn)
#if HARD_FRAME_POINTER_REGNUM != FRAME_POINTER_REGNUM
SET_HARD_REG_BIT (end_of_function_needs.regs, HARD_FRAME_POINTER_REGNUM);
#endif
#ifdef EXIT_IGNORE_STACK
if (! EXIT_IGNORE_STACK
|| current_function_sp_is_unchanging)
#endif
SET_HARD_REG_BIT (end_of_function_needs.regs, STACK_POINTER_REGNUM);
}
else