builtins.c (expand_builtin_apply): Don't defer pop during argument setup.
authorJason McMullan <jmcmullan@linuxcare.com>
Mon, 31 Jul 2000 16:37:34 +0000 (16:37 +0000)
committerRichard Henderson <rth@gcc.gnu.org>
Mon, 31 Jul 2000 16:37:34 +0000 (09:37 -0700)
        * builtins.c (expand_builtin_apply): Don't defer pop during
        argument setup.

From-SVN: r35382

gcc/ChangeLog
gcc/builtins.c

index 42ea12c88f810b8cba9e97ff1249465a1d5ed175..7c84c60c43a3fb119285b96cb31131877641baa4 100644 (file)
@@ -1,3 +1,8 @@
+2000-07-31  Jason McMullan  <jmcmullan@linuxcare.com>
+
+       * builtins.c (expand_builtin_apply): Don't defer pop during
+       argument setup.
+
 2000-07-31 Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>
 
        * calls.c (combine_pending_stack_adjustment_and_call): Only use
index 56e6c265caff85ed1f30620638dd0298751c7ca0..d7ce1e74236eafeb2c5debe920077191352899e2 100644 (file)
@@ -885,8 +885,11 @@ expand_builtin_apply (function, arguments, argsize)
   /* Perform postincrements before actually calling the function.  */
   emit_queue ();
 
-  /* Push a new argument block and copy the arguments.  */
+  /* Push a new argument block and copy the arguments.  Do not allow
+     the (potential) memcpy call below to interfere with our stack
+     manipulations.  */
   do_pending_stack_adjust ();
+  NO_DEFER_POP;
 
   /* Save the stack with nonlocal if available */
 #ifdef HAVE_save_stack_nonlocal
@@ -1026,6 +1029,8 @@ expand_builtin_apply (function, arguments, argsize)
 #endif
     emit_stack_restore (SAVE_BLOCK, old_stack_level, NULL_RTX);
 
+  OK_DEFER_POP;
+
   /* Return the address of the result block.  */
   return copy_addr_to_reg (XEXP (result, 0));
 }