(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:
parent
1fd3ef7f65
commit
15fc002672
13
gcc/explow.c
13
gcc/explow.c
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user