aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMike Stump <mrs@gcc.gnu.org>1994-09-29 23:43:02 +0000
committerMike Stump <mrs@gcc.gnu.org>1994-09-29 23:43:02 +0000
commit7a9a00be049860530e590125f1a8b0f999a40fa4 (patch)
treedc208b0a6c0e8361ba575ef255f4788a22253c62 /gcc
parent0f05a13c10cfeae603043c9fadcb3a8a169d112a (diff)
downloadgcc-7a9a00be049860530e590125f1a8b0f999a40fa4.zip
gcc-7a9a00be049860530e590125f1a8b0f999a40fa4.tar.gz
gcc-7a9a00be049860530e590125f1a8b0f999a40fa4.tar.bz2
stmt.c (expand_return): We have to be careful of cleanups that can be generated when...
* stmt.c (expand_return): We have to be careful of cleanups that can be generated when expanding the return value, as they might otherwise wipe out the return value. From-SVN: r8167
Diffstat (limited to 'gcc')
-rw-r--r--gcc/stmt.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/gcc/stmt.c b/gcc/stmt.c
index 1046ba1..c845d30 100644
--- a/gcc/stmt.c
+++ b/gcc/stmt.c
@@ -2513,7 +2513,15 @@ expand_return (retval)
}
/* Are any cleanups needed? E.g. C++ destructors to be run? */
+ /* This is not sufficient. We also need to watch for cleanups of the
+ expression we are about to expand. Unfortunately, we cannot know
+ if it has cleanups until we expand it, and we want to change how we
+ expand it depending upon if we need cleanups. We can't win. */
+#if 0
cleanups = any_pending_cleanups (1);
+#else
+ cleanups = 1;
+#endif
if (TREE_CODE (retval) == RESULT_DECL)
retval_rhs = retval;