re PR c++/37740 ([C++0x] "foo f{...}" form compiles, but "new foo{...}" one doesn't)
authorJason Merrill <jason@redhat.com>
Fri, 14 Nov 2008 20:50:59 +0000 (15:50 -0500)
committerJason Merrill <jason@gcc.gnu.org>
Fri, 14 Nov 2008 20:50:59 +0000 (15:50 -0500)
        PR c++/37740
        * call.c (build_aggr_conv): Increment i.

From-SVN: r141865

gcc/cp/ChangeLog
gcc/cp/call.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/cpp0x/initlist8.C [new file with mode: 0644]

index 2c936ef..fd610b1 100644 (file)
@@ -1,3 +1,8 @@
+2008-11-14  Jason Merrill  <jason@redhat.com>
+
+       PR c++/37740
+       * call.c (build_aggr_conv): Increment i.
+
 2008-11-13  Jason Merrill  <jason@redhat.com>
 
        PR c++/37932
index bdaf7fd..4d86a44 100644 (file)
@@ -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;
index e2723d7..6e86c2e 100644 (file)
@@ -1,3 +1,8 @@
+2008-11-14  Jason Merrill  <jason@redhat.com>
+
+       PR c++/37740
+       * g++.dg/cpp0x/initlist8.C: New test.
+
 2008-11-13  Steve Ellcey  <sje@cup.hp.com>
 
        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 (file)
index 0000000..db63eee
--- /dev/null
@@ -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};
+}