OSDN Git Service

* calls.c (expand_call): Defer const/pure NO_DEFER_POP until
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 29 Nov 2000 00:27:54 +0000 (00:27 +0000)
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 29 Nov 2000 00:27:54 +0000 (00:27 +0000)
        after sibcall do_pending_stack_adjust.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@37836 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/calls.c

index e606be4..0fc0b84 100644 (file)
@@ -1,3 +1,8 @@
+2000-11-28  Richard Henderson  <rth@redhat.com>
+
+       * calls.c (expand_call): Defer const/pure NO_DEFER_POP until
+       after sibcall do_pending_stack_adjust.
+
 Wed Nov 29 00:08:23 2000  J"orn Rennecke <amylaar@redhat.com>
 
        * jump.c (delete_insn): Check that REG_LABEL note actually contains
index ad79078..45210c2 100644 (file)
@@ -2657,11 +2657,6 @@ expand_call (exp, target, ignore)
          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))
-       NO_DEFER_POP;
-
       /* Don't let pending stack adjusts add up to too much.
         Also, do all pending adjustments now if there is any chance
         this might be a call to alloca or if we are expanding a sibling
@@ -2671,6 +2666,11 @@ expand_call (exp, target, ignore)
          || pass == 0)
        do_pending_stack_adjust ();
 
+      /* 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))
+       NO_DEFER_POP;
+
       /* Push the temporary stack slot level so that we can free any
         temporaries we make.  */
       push_temp_slots ();