OSDN Git Service

PR c++/27270
authormmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 17 Oct 2006 02:01:27 +0000 (02:01 +0000)
committermmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 17 Oct 2006 02:01:27 +0000 (02:01 +0000)
* typeck2.c (process_init_constructor_array): Reword comment.
* pt.c (tsubst_copy_and_built): Call reshape_init before calling
digest_init.
PR c++/27270
* g++.dg/ext/complit8.C: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@117814 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/cp/ChangeLog
gcc/cp/pt.c
gcc/cp/typeck2.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/ext/complit8.C [new file with mode: 0644]

index ff47180..e603fd5 100644 (file)
@@ -1,5 +1,10 @@
 2006-10-16  Mark Mitchell  <mark@codesourcery.com>
 
+       PR c++/27270
+       * typeck2.c (process_init_constructor_array): Reword comment.
+       * pt.c (tsubst_copy_and_built): Call reshape_init before calling
+       digest_init.
+
        PR c++/29408
        * parser.c (cp_parser_using_declaration): Stop parsing when
        something goes wrong with an access declaration.
index 744871f..ce5a809 100644 (file)
@@ -9351,7 +9351,10 @@ tsubst_copy_and_build (tree t,
        TREE_HAS_CONSTRUCTOR (r) = TREE_HAS_CONSTRUCTOR (t);
 
        if (type)
-         return digest_init (type, r);
+         {
+           r = reshape_init (type, r);
+           return digest_init (type, r);
+         }
        return r;
       }
 
index 6d847cb..725c85f 100644 (file)
@@ -791,8 +791,8 @@ process_init_constructor_array (tree type, tree init)
     /* Vectors are like simple fixed-size arrays.  */
     len = TYPE_VECTOR_SUBPARTS (type);
 
-  /* There cannot be more initializers than needed (or reshape_init would
-     detect this before we do.  */
+  /* There cannot be more initializers than needed as otherwise
+     reshape_init would have already rejected the initializer.  */
   if (!unbounded)
     gcc_assert (VEC_length (constructor_elt, v) <= len);
 
index 3bf1718..603cbed 100644 (file)
@@ -1,5 +1,8 @@
 2006-10-16  Mark Mitchell  <mark@codesourcery.com>
 
+       PR c++/27270
+       * g++.dg/ext/complit8.C: New test.
+
        PR c++/29408
        * g++.dg/parse/dtor12.C: New test.
 
diff --git a/gcc/testsuite/g++.dg/ext/complit8.C b/gcc/testsuite/g++.dg/ext/complit8.C
new file mode 100644 (file)
index 0000000..b778b4b
--- /dev/null
@@ -0,0 +1,12 @@
+// PR c++/27270
+// { dg-options "" }
+
+template<typename Entry>
+struct Array {
+  Entry *array[32];
+  Array () :
+    array ( (Entry*[1]) { 0, 0 } ) // { dg-error "initializers|conversion" }
+  {}
+};
+
+Array<void*> a;