aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMike Stump <mrs@gcc.gnu.org>1994-05-19 23:14:04 +0000
committerMike Stump <mrs@gcc.gnu.org>1994-05-19 23:14:04 +0000
commitef5057f84d43d10ff83ab4052142a27675026d89 (patch)
tree4ad8501dd0199a1c9efcef9839ac373c25a9bdbd /gcc
parentcb4a4241cf905f2fb120e812a4fbafa9715c0eae (diff)
downloadgcc-ef5057f84d43d10ff83ab4052142a27675026d89.zip
gcc-ef5057f84d43d10ff83ab4052142a27675026d89.tar.gz
gcc-ef5057f84d43d10ff83ab4052142a27675026d89.tar.bz2
calls.c (expand_call): Only destroy temps here, if -fshort-temps is given.
* calls.c (expand_call): Only destroy temps here, if -fshort-temps is given. From-SVN: r7341
Diffstat (limited to 'gcc')
-rw-r--r--gcc/calls.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/gcc/calls.c b/gcc/calls.c
index cc6a74a..4b264f8 100644
--- a/gcc/calls.c
+++ b/gcc/calls.c
@@ -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