(allocate_dynamic_stack_space): Just return virtual_stack_dynamic_rtx if asking for zero bytes.

(allocate_dynamic_stack_space): Just return virtual_stack_dynamic_rtx if
asking for zero bytes.
Set current_function_calls_alloca here and also record new stack level for
nonlocal gotos.

From-SVN: r7229
This commit is contained in:
Richard Kenner 1994-05-06 13:44:29 -04:00
parent 1fd3ef7f65
commit 15fc002672
1 changed files with 13 additions and 0 deletions

View File

@ -915,6 +915,15 @@ allocate_dynamic_stack_space (size, target, known_align)
rtx target;
int known_align;
{
/* If we're asking for zero bytes, it doesn't matter what we point
to since we can't derefference it. But return a reasonable
address anyway. */
if (size == const0_rtx)
return virtual_stack_dynamic_rtx;
/* Otherwise, show we're calling alloca or equivalent. */
current_function_calls_alloca = 1;
/* Ensure the size is in the proper mode. */
if (GET_MODE (size) != VOIDmode && GET_MODE (size) != Pmode)
size = convert_to_mode (Pmode, size, 1);
@ -1061,6 +1070,10 @@ allocate_dynamic_stack_space (size, target, known_align)
emit_insn (gen_probe ());
#endif
/* Record the new stack level for nonlocal gotos. */
if (nonlocal_goto_handler_slot != 0)
emit_stack_save (SAVE_NONLOCAL, &nonlocal_goto_stack_level, NULL_RTX);
return target;
}