From: Richard Kenner Date: Fri, 6 May 1994 17:44:29 +0000 (-0400) Subject: (allocate_dynamic_stack_space): Just return virtual_stack_dynamic_rtx if asking for... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=15fc002672d643fd9d93d220027b5cd2aefc632c;p=gcc.git (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 --- diff --git a/gcc/explow.c b/gcc/explow.c index b047dff386f..7f1e196e5a8 100644 --- a/gcc/explow.c +++ b/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; }