Commit 40184445 by Bernd Schmidt Committed by Bernd Schmidt

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
parent 02a65d23
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
......
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