diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 9bd55899a61..e63dd396909 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 b8f13786fc6..ba97c570b6b 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 0a2417cd737..b458ead85ff 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 00000000000..a98c5fedf2d --- /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 (); +}