calls.c (expand_call): Only destroy temps here, if -fshort-temps is given.
authorMike Stump <mrs@gcc.gnu.org>
Thu, 19 May 1994 23:14:04 +0000 (23:14 +0000)
committerMike Stump <mrs@gcc.gnu.org>
Thu, 19 May 1994 23:14:04 +0000 (23:14 +0000)
        * calls.c (expand_call): Only destroy temps here, if -fshort-temps
        is given.

From-SVN: r7341

gcc/calls.c

index cc6a74a5668d2a8d5068d433994f5628a6f9dfd9..4b264f882932f8db64e9ec63f9684b2200106c69 100644 (file)
@@ -702,12 +702,16 @@ expand_call (exp, target, ignore)
       /* If inlining succeeded, return.  */
       if ((HOST_WIDE_INT) temp != -1)
        {
-         /* Perform all cleanups needed for the arguments of this call
-            (i.e. destructors in C++).  It is ok if these destructors
-            clobber RETURN_VALUE_REG, because the only time we care about
-            this is when TARGET is that register.  But in C++, we take
-            care to never return that register directly.  */
-         expand_cleanups_to (old_cleanups);
+         if (flag_short_temps)
+           {
+             /* Perform all cleanups needed for the arguments of this
+                call (i.e. destructors in C++).  It is ok if these
+                destructors clobber RETURN_VALUE_REG, because the
+                only time we care about this is when TARGET is that
+                register.  But in C++, we take care to never return
+                that register directly.  */
+             expand_cleanups_to (old_cleanups);
+           }
 
 #ifdef ACCUMULATE_OUTGOING_ARGS
          /* If the outgoing argument list must be preserved, push