aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2000-12-07 10:19:10 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2000-12-07 10:19:10 +0100
commit5eec2847332bbfbd0c711786d6d3c5f4db03ecee (patch)
tree456a97854748d7fe1698b9098c137ccde2e549f5 /gcc
parentc0d82ab19c37e195bc3ba247aa96724137b05afa (diff)
downloadgcc-5eec2847332bbfbd0c711786d6d3c5f4db03ecee.zip
gcc-5eec2847332bbfbd0c711786d6d3c5f4db03ecee.tar.gz
gcc-5eec2847332bbfbd0c711786d6d3c5f4db03ecee.tar.bz2
optimize.c (copy_body_r): Set STMT_IS_FULL_EXPR_P on EXPR_STMT.
* optimize.c (copy_body_r): Set STMT_IS_FULL_EXPR_P on EXPR_STMT. * g++.old-deja/g++.other/cleanup4.C: New test. From-SVN: r38110
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog4
-rw-r--r--gcc/cp/optimize.c1
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/g++.old-deja/g++.other/cleanup4.C34
4 files changed, 43 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 9bd5589..e63dd39 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,7 @@
+2000-12-07 Jakub Jelinek <jakub@redhat.com>
+
+ * optimize.c (copy_body_r): Set STMT_IS_FULL_EXPR_P on EXPR_STMT.
+
2000-12-07 Joseph S. Myers <jsm28@cam.ac.uk>
* decl2.c (lang_decode_option): Handle -Wformat-security.
diff --git a/gcc/cp/optimize.c b/gcc/cp/optimize.c
index b8f1378..ba97c57 100644
--- a/gcc/cp/optimize.c
+++ b/gcc/cp/optimize.c
@@ -289,6 +289,7 @@ copy_body_r (tp, walk_subtrees, data)
{
*tp = build_stmt (EXPR_STMT,
RETURN_EXPR (return_stmt));
+ STMT_IS_FULL_EXPR_P (*tp) = 1;
/* And then jump to the end of the function. */
TREE_CHAIN (*tp) = goto_stmt;
}
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 0a2417c..b458ead 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2000-12-07 Jakub Jelinek <jakub@redhat.com>
+
+ * g++.old-deja/g++.other/cleanup4.C: New test.
+
2000-12-07 Joseph S. Myers <jsm28@cam.ac.uk>
* format-sec-1.c: New test.
diff --git a/gcc/testsuite/g++.old-deja/g++.other/cleanup4.C b/gcc/testsuite/g++.old-deja/g++.other/cleanup4.C
new file mode 100644
index 0000000..a98c5fe
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.other/cleanup4.C
@@ -0,0 +1,34 @@
+// Build don't link:
+// Origin: Jakub Jelinek <jakub@redhat.com>
+// Special g++ Options: -O2 -fno-exceptions
+
+class foo
+{
+public:
+ foo ();
+ ~foo ();
+};
+
+class bar
+{
+public:
+ bar ();
+ bar (const foo&);
+};
+
+int i;
+foo f ();
+
+inline bar x ()
+{
+ switch (i)
+ {
+ case 0: return bar (f ());
+ default: return bar ();
+ }
+}
+
+bar y ()
+{
+ return x ();
+}