diff options
author | mrs <mrs@138bc75d-0d04-0410-961f-82ee72b054a4> | 1994-05-19 23:14:04 +0000 |
---|---|---|
committer | mrs <mrs@138bc75d-0d04-0410-961f-82ee72b054a4> | 1994-05-19 23:14:04 +0000 |
commit | ba7ee0e22b4593d845af79e3188141e3bade2979 (patch) | |
tree | 4ad8501dd0199a1c9efcef9839ac373c25a9bdbd /gcc/calls.c | |
parent | 68acc686f1cb1e1a8396ca5c86c9d7a36d9ad44e (diff) | |
download | gcc-ba7ee0e22b4593d845af79e3188141e3bade2979.tar.gz |
* calls.c (expand_call): Only destroy temps here, if -fshort-temps
is given.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@7341 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/calls.c')
-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 cc6a74a5668..4b264f88293 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 |