]> gcc.gnu.org Git - gcc.git/commitdiff
(allocate_dynamic_stack_space): Just return virtual_stack_dynamic_rtx if asking for...
authorRichard Kenner <kenner@gcc.gnu.org>
Fri, 6 May 1994 17:44:29 +0000 (13:44 -0400)
committerRichard Kenner <kenner@gcc.gnu.org>
Fri, 6 May 1994 17:44:29 +0000 (13:44 -0400)
(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

gcc/explow.c

index b047dff386fd28d6b34bb25cc0d49b2b542da117..7f1e196e5a870edab931f22bc33e5c5f7e110984 100644 (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;
 }
 \f
This page took 0.063697 seconds and 5 git commands to generate.