mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-20 17:40:46 +08:00
function.c (expand_function_end): If current_function_calls_alloca...
* function.c (expand_function_end): If current_function_calls_alloca, emit stack restore in a place that is reached when the function falls through at the end. From-SVN: r94259
This commit is contained in:
parent
02a65d230f
commit
4018444567
@ -1,3 +1,9 @@
|
||||
2005-01-26 Bernd Schmidt <bernd.schmidt@analog.com>
|
||||
|
||||
* function.c (expand_function_end): If current_function_calls_alloca,
|
||||
emit stack restore in a place that is reached when the function falls
|
||||
through at the end.
|
||||
|
||||
2005-01-26 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* Makefile.in (../$(build_subdir)/fixincludes/fixincl): Add dummy
|
||||
|
@ -4460,18 +4460,6 @@ expand_function_end (void)
|
||||
if (flag_exceptions && USING_SJLJ_EXCEPTIONS)
|
||||
sjlj_emit_function_exit_after (get_last_insn ());
|
||||
|
||||
/* 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. */
|
||||
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);
|
||||
}
|
||||
|
||||
/* 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
|
||||
return register. */
|
||||
@ -4599,6 +4587,18 @@ expand_function_end (void)
|
||||
/* Output the label for the naked return from the function. */
|
||||
emit_label (naked_return_label);
|
||||
|
||||
/* 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. */
|
||||
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);
|
||||
}
|
||||
|
||||
/* ??? This should no longer be necessary since stupid is no longer with
|
||||
us, but there are some parts of the compiler (eg reload_combine, and
|
||||
sh mach_dep_reorg) that still try and compute their own lifetime info
|
||||
|
Loading…
x
Reference in New Issue
Block a user