aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/calls.c15
2 files changed, 14 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e0aa443..ae88e9c 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2000-05-15 Jakub Jelinek <jakub@redhat.com>
+
+ * calls.c (expand_call): Move expand_start_target_temps call after
+ start_sequence().
+
2000-05-15 Neil Booth <NeilB@earthling.net>
* cpphash.c (trad_stringify, warn_trad_stringify,
diff --git a/gcc/calls.c b/gcc/calls.c
index 5c12ccf..ee4b678 100644
--- a/gcc/calls.c
+++ b/gcc/calls.c
@@ -2341,12 +2341,6 @@ expand_call (exp, target, ignore)
only one of the alternates. */
emit_queue ();
- /* We know at this point that there are not currently any
- pending cleanups. If, however, in the process of evaluating
- the arguments we were to create some, we'll need to be
- able to get rid of them. */
- expand_start_target_temps ();
-
/* State variables we need to save and restore between
iterations. */
save_pending_stack_adjust = pending_stack_adjust;
@@ -2368,6 +2362,15 @@ expand_call (exp, target, ignore)
sibcall_failure instead of continuing the loop. */
start_sequence ();
+ if (pass == 0)
+ {
+ /* We know at this point that there are not currently any
+ pending cleanups. If, however, in the process of evaluating
+ the arguments we were to create some, we'll need to be
+ able to get rid of them. */
+ expand_start_target_temps ();
+ }
+
/* When calling a const function, we must pop the stack args right away,
so that the pop is deleted or moved with the call. */
if (flags & (ECF_CONST | ECF_PURE))