re PR c++/51621 ([c++0x] [4.6/4.7 Regression] ICE with invalid constexpr and array...
authorPaolo Carlini <paolo.carlini@oracle.com>
Tue, 20 Dec 2011 23:51:09 +0000 (23:51 +0000)
committerPaolo Carlini <paolo@gcc.gnu.org>
Tue, 20 Dec 2011 23:51:09 +0000 (23:51 +0000)
/cp
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.

From-SVN: r182556

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

index 0e570f82ed10ed7c8e4bdb5e10e63a277d57bdc4..9ccb801dc7b1bf67876c3fe4a4c5d35904d1122e 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 7899397cdd8321f6a3040c924fdc65f9c5b1f3c8..aabe86318d58a262af69e05fdfab730674f41fbd 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 1d329e24df03b430dcb75ea0a93b5c851f900753..629c263a1f413b16e57fc4fe22ec9cb9ddd05428 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" }
+};