diff options
author | Mike Stump <mrs@gcc.gnu.org> | 1994-05-19 23:14:04 +0000 |
---|---|---|
committer | Mike Stump <mrs@gcc.gnu.org> | 1994-05-19 23:14:04 +0000 |
commit | ef5057f84d43d10ff83ab4052142a27675026d89 (patch) | |
tree | 4ad8501dd0199a1c9efcef9839ac373c25a9bdbd /gcc | |
parent | cb4a4241cf905f2fb120e812a4fbafa9715c0eae (diff) | |
download | gcc-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.c | 16 |
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 |