From 7ac37b9675f5111039b2b21d01ecde8e534b4d73 Mon Sep 17 00:00:00 2001 From: Paolo Carlini Date: Tue, 20 Dec 2011 23:51:09 +0000 Subject: [PATCH] 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 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 PR c++/51621 * g++.dg/cpp0x/constexpr-ice5.C: New. From-SVN: r182556 --- gcc/cp/ChangeLog | 6 ++++++ gcc/cp/tree.c | 2 +- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/g++.dg/cpp0x/constexpr-ice5.C | 13 +++++++++++++ 4 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/g++.dg/cpp0x/constexpr-ice5.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 0e570f82ed1..9ccb801dc7b 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2011-12-20 Paolo Carlini + + 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 PR debug/49951 diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c index 7899397cdd8..aabe86318d5 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 1d329e24df0..629c263a1f4 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2011-12-20 Paolo Carlini + + PR c++/51621 + * g++.dg/cpp0x/constexpr-ice5.C: New. + 2011-12-20 Joseph Myers * 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 00000000000..b88ec66c9f6 --- /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" } +}; -- 2.30.2