OSDN Git Service

/cp
authorpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 20 Dec 2011 23:51:09 +0000 (23:51 +0000)
committerpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 20 Dec 2011 23:51:09 +0000 (23:51 +0000)
2011-12-20  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/51621
* tree.c (diagnose_non_constexpr_vec_init): For value initialization
pass void_type_node, not void_zero_node, to build_vec_init_elt.

/testsuite
2011-12-20  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/51621
* g++.dg/cpp0x/constexpr-ice5.C: New.

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

gcc/cp/ChangeLog
gcc/cp/tree.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/cpp0x/constexpr-ice5.C [new file with mode: 0644]

index 0e570f8..9ccb801 100644 (file)
@@ -1,3 +1,9 @@
+2011-12-20  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/51621
+       * tree.c (diagnose_non_constexpr_vec_init): For value initialization
+       pass void_type_node, not void_zero_node, to build_vec_init_elt.
+
 2011-12-20  Dodji Seketeli  <dodji@redhat.com>
 
        PR debug/49951
index 7899397..aabe863 100644 (file)
@@ -564,7 +564,7 @@ diagnose_non_constexpr_vec_init (tree expr)
   tree type = TREE_TYPE (VEC_INIT_EXPR_SLOT (expr));
   tree init, elt_init;
   if (VEC_INIT_EXPR_VALUE_INIT (expr))
-    init = void_zero_node;
+    init = void_type_node;
   else
     init = VEC_INIT_EXPR_INIT (expr);
 
index 1d329e2..629c263 100644 (file)
@@ -1,3 +1,8 @@
+2011-12-20  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/51621
+       * g++.dg/cpp0x/constexpr-ice5.C: New.
+
 2011-12-20  Joseph Myers  <joseph@codesourcery.com>
 
        * gcc.dg/c11-version-1.c, gcc.dg/c11-version-2.c,
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-ice5.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-ice5.C
new file mode 100644 (file)
index 0000000..b88ec66
--- /dev/null
@@ -0,0 +1,13 @@
+// PR c++/51621
+// { dg-options -std=c++0x }
+
+struct A
+{
+  A() {}
+};
+
+struct B
+{
+  A a[1];
+  constexpr B() : a() {} // { dg-error "non-constant|non-constexpr" }
+};