From 2d2c68a3e769883a831f6de9af5bdde63698473c Mon Sep 17 00:00:00 2001 From: Jason Merrill Date: Fri, 14 Nov 2008 15:50:59 -0500 Subject: [PATCH] re PR c++/37740 ([C++0x] "foo f{...}" form compiles, but "new foo{...}" one doesn't) PR c++/37740 * call.c (build_aggr_conv): Increment i. From-SVN: r141865 --- gcc/cp/ChangeLog | 5 +++++ gcc/cp/call.c | 2 +- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/g++.dg/cpp0x/initlist8.C | 19 +++++++++++++++++++ 4 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/g++.dg/cpp0x/initlist8.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 2c936efc99b4..fd610b19fe71 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2008-11-14 Jason Merrill + + PR c++/37740 + * call.c (build_aggr_conv): Increment i. + 2008-11-13 Jason Merrill PR c++/37932 diff --git a/gcc/cp/call.c b/gcc/cp/call.c index bdaf7fdcc92a..4d86a44f35b0 100644 --- a/gcc/cp/call.c +++ b/gcc/cp/call.c @@ -619,7 +619,7 @@ build_aggr_conv (tree type, tree ctor, int flags) conversion *c; tree field = TYPE_FIELDS (type); - for (; field; field = TREE_CHAIN (field)) + for (; field; field = TREE_CHAIN (field), ++i) { if (TREE_CODE (field) != FIELD_DECL) continue; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index e2723d768762..6e86c2e3c813 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2008-11-14 Jason Merrill + + PR c++/37740 + * g++.dg/cpp0x/initlist8.C: New test. + 2008-11-13 Steve Ellcey PR middle-end/38004 diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist8.C b/gcc/testsuite/g++.dg/cpp0x/initlist8.C new file mode 100644 index 000000000000..db63eee78b60 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/initlist8.C @@ -0,0 +1,19 @@ +// PR c++/37740 +// { dg-options "-std=c++0x" } + +struct A +{ + int i; +}; + +struct B +{ + double d; + A i; +}; + +int main() +{ + A a; + new B{3.2, a}; +} -- 2.47.2