From: Jakub Jelinek Date: Thu, 7 Dec 2000 09:19:10 +0000 (+0100) Subject: optimize.c (copy_body_r): Set STMT_IS_FULL_EXPR_P on EXPR_STMT. X-Git-Tag: prereleases/libstdc++-2.92~2388 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5eec2847332bbfbd0c711786d6d3c5f4db03ecee;p=thirdparty%2Fgcc.git 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 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 9bd55899a61d..e63dd3969092 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,7 @@ +2000-12-07 Jakub Jelinek + + * optimize.c (copy_body_r): Set STMT_IS_FULL_EXPR_P on EXPR_STMT. + 2000-12-07 Joseph S. Myers * decl2.c (lang_decode_option): Handle -Wformat-security. diff --git a/gcc/cp/optimize.c b/gcc/cp/optimize.c index b8f13786fc68..ba97c570b6ba 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 0a2417cd7373..b458ead85ffe 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2000-12-07 Jakub Jelinek + + * g++.old-deja/g++.other/cleanup4.C: New test. + 2000-12-07 Joseph S. Myers * 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 000000000000..a98c5fedf2d5 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.other/cleanup4.C @@ -0,0 +1,34 @@ +// Build don't link: +// Origin: Jakub Jelinek +// 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 (); +}