diff options
author | Jason Merrill <jason@redhat.com> | 2011-07-09 13:01:11 -0400 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2011-07-09 13:01:11 -0400 |
commit | 20888def1b70428012f4163348d294cdb94ca5f8 (patch) | |
tree | a4a5965cd7037fa41bb79c122c4f78e759d18a04 | |
parent | 5b696ba2dc1b84bf91782c4c89c19eef224d58cf (diff) | |
download | gcc-20888def1b70428012f4163348d294cdb94ca5f8.zip gcc-20888def1b70428012f4163348d294cdb94ca5f8.tar.gz gcc-20888def1b70428012f4163348d294cdb94ca5f8.tar.bz2 |
* tree.c (build_vec_init_elt): Strip TARGET_EXPR.
From-SVN: r176084
-rw-r--r-- | gcc/cp/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/cp/tree.c | 5 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/regress/regress5.C | 16 |
4 files changed, 29 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index cbdc4d8..c19e8b3 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,7 @@ +2011-07-09 Jason Merrill <jason@redhat.com> + + * tree.c (build_vec_init_elt): Strip TARGET_EXPR. + 2011-07-08 Jason Merrill <jason@redhat.com> PR c++/45437 diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c index dcd85e4..4ef89c4 100644 --- a/gcc/cp/tree.c +++ b/gcc/cp/tree.c @@ -511,6 +511,11 @@ build_vec_init_elt (tree type, tree init, tsubst_flags_t complain) complain); release_tree_vector (argvec); + /* For a trivial constructor, build_over_call creates a TARGET_EXPR. But + we don't want one here because we aren't creating a temporary. */ + if (TREE_CODE (init) == TARGET_EXPR) + init = TARGET_EXPR_INITIAL (init); + return init; } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 5b8be33..badb65e 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2011-07-09 Jason Merrill <jason@redhat.com> + + * g++.dg/cpp0x/regress/regress5.C: New. + 2011-07-08 Jason Merrill <jason@redhat.com> PR c++/45437 diff --git a/gcc/testsuite/g++.dg/cpp0x/regress/regress5.C b/gcc/testsuite/g++.dg/cpp0x/regress/regress5.C new file mode 100644 index 0000000..b193591 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/regress/regress5.C @@ -0,0 +1,16 @@ +// { dg-options -std=c++0x } + +struct A +{ + int i; + A(int); +}; + +struct B +{ + virtual void f(); + A ar[3]; +}; + +extern B b; +B b2(b); |