aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJason McMullan <jmcmullan@linuxcare.com>2000-07-31 16:37:34 +0000
committerRichard Henderson <rth@gcc.gnu.org>2000-07-31 09:37:34 -0700
commit9d53e58583c5dfeb80ce042aa380982c771476f7 (patch)
tree93e35327a795bf39efb9f8ab2042a974b57d7941 /gcc
parente079dcdb685b02d9e05c93d4874107d5daa8e211 (diff)
downloadgcc-9d53e58583c5dfeb80ce042aa380982c771476f7.zip
gcc-9d53e58583c5dfeb80ce042aa380982c771476f7.tar.gz
gcc-9d53e58583c5dfeb80ce042aa380982c771476f7.tar.bz2
builtins.c (expand_builtin_apply): Don't defer pop during argument setup.
* builtins.c (expand_builtin_apply): Don't defer pop during argument setup. From-SVN: r35382
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/builtins.c7
2 files changed, 11 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 42ea12c..7c84c60 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/builtins.c b/gcc/builtins.c
index 56e6c26..d7ce1e7 100644
--- a/gcc/builtins.c
+++ b/gcc/builtins.c
@@ -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));
}