diff options
| -rw-r--r-- | gcc/cp/ChangeLog | 4 | ||||
| -rw-r--r-- | gcc/cp/cp-gimplify.c | 2 | ||||
| -rw-r--r-- | gcc/testsuite/g++.dg/ext/stmtexpr3.C | 9 |
3 files changed, 15 insertions, 0 deletions
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 <jason@redhat.com> + + * cp-gimplify.c (cp_gimplify_init_expr): Look throug + 2004-06-21 Mark Mitchell <mark@codesourcery.com> * 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(); }); } |
