From acd408799af21e3f1d1ebc06e394283c5f1aa5ef Mon Sep 17 00:00:00 2001 From: jason Date: Tue, 22 Jun 2004 21:15:29 +0000 Subject: [PATCH] PR c++/16112 * cp-gimplify.c (cp_gimplify_init_expr): Look through CLEANUP_POINT_EXPR. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@83514 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/ChangeLog | 4 ++++ gcc/cp/cp-gimplify.c | 2 ++ gcc/testsuite/g++.dg/ext/stmtexpr3.C | 9 +++++++++ 3 files changed, 15 insertions(+) create mode 100644 gcc/testsuite/g++.dg/ext/stmtexpr3.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 05ddba3..7838ab8 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,7 @@ +2004-06-21 Jason Merrill + + * cp-gimplify.c (cp_gimplify_init_expr): Look throug + 2004-06-21 Mark Mitchell * cp-tree.def (NEW_EXPR): Add a fourth slot. diff --git a/gcc/cp/cp-gimplify.c b/gcc/cp/cp-gimplify.c index f9b2364..db88e05 100644 --- a/gcc/cp/cp-gimplify.c +++ b/gcc/cp/cp-gimplify.c @@ -116,6 +116,8 @@ cp_gimplify_init_expr (tree *expr_p, tree *pre_p, tree *post_p) case, I guess we'll need to replace references somehow. */ if (TREE_CODE (from) == TARGET_EXPR) from = TARGET_EXPR_INITIAL (from); + if (TREE_CODE (from) == CLEANUP_POINT_EXPR) + from = TREE_OPERAND (from, 0); /* Look through any COMPOUND_EXPRs. */ sub = expr_last (from); diff --git a/gcc/testsuite/g++.dg/ext/stmtexpr3.C b/gcc/testsuite/g++.dg/ext/stmtexpr3.C new file mode 100644 index 0000000..9a3205c0 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/stmtexpr3.C @@ -0,0 +1,9 @@ +// PR c++/16112 +// { dg-options "" } + +struct A +{ + A(); +}; + +A foo() { return ({ A(); }); } -- 2.7.4