diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 2c936efc99b..fd610b19fe7 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 bdaf7fdcc92..4d86a44f35b 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 e2723d76876..6e86c2e3c81 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 00000000000..db63eee78b6 --- /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}; +}