aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2011-12-20 23:51:09 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2011-12-20 23:51:09 +0000
commit7ac37b9675f5111039b2b21d01ecde8e534b4d73 (patch)
treec2a6dc236081392ffd1d3297d7d44fc853861479 /gcc
parenta0c8d0c1e36976bf178b9eea29188e11a4e43b89 (diff)
downloadgcc-7ac37b9675f5111039b2b21d01ecde8e534b4d73.zip
gcc-7ac37b9675f5111039b2b21d01ecde8e534b4d73.tar.gz
gcc-7ac37b9675f5111039b2b21d01ecde8e534b4d73.tar.bz2
re PR c++/51621 ([c++0x] [4.6/4.7 Regression] ICE with invalid constexpr and array class member)
/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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/tree.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/constexpr-ice5.C13
4 files changed, 25 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 0e570f8..9ccb801 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -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
diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c
index 7899397..aabe863 100644
--- a/gcc/cp/tree.c
+++ b/gcc/cp/tree.c
@@ -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);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 1d329e2..629c263 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -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
index 0000000..b88ec66
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-ice5.C
@@ -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" }
+};