diff options
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/calls.c | 15 |
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)) |