aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2011-12-19 16:38:06 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2011-12-19 16:38:06 +0100
commit23a3541f271216b1a518ecb6f713500b76949172 (patch)
tree870e64d07402b28f8b627125be106ac5ceb754bb /gcc
parentcd99c23ca41f9fb6792e39f0e91a950cf1e531aa (diff)
downloadgcc-23a3541f271216b1a518ecb6f713500b76949172.zip
gcc-23a3541f271216b1a518ecb6f713500b76949172.tar.gz
gcc-23a3541f271216b1a518ecb6f713500b76949172.tar.bz2
re PR c++/51619 ([c++0x] [4.6 Regression] ICE with array class member)
PR c++/51619 * semantics.c (cxx_eval_vec_init_1): If init is NULL for multidimensional array, just set eltinit to NULL_TREE. * g++.dg/cpp0x/pr51619.C: New test. From-SVN: r182485
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog4
-rw-r--r--gcc/cp/semantics.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/pr51619.C7
4 files changed, 17 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index d8b30df..d9e1949 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,5 +1,9 @@
2011-12-19 Jakub Jelinek <jakub@redhat.com>
+ PR c++/51619
+ * semantics.c (cxx_eval_vec_init_1): If init is NULL for
+ multidimensional array, just set eltinit to NULL_TREE.
+
* cp-gimplify.c (gimplify_must_not_throw_expr): Use
gimple_seq_add_stmt_without_update instead of gimplify_seq_add_stmt.
diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c
index e73b40a..2788daa 100644
--- a/gcc/cp/semantics.c
+++ b/gcc/cp/semantics.c
@@ -7065,7 +7065,7 @@ cxx_eval_vec_init_1 (const constexpr_call *call, tree atype, tree init,
if (TREE_CODE (elttype) == ARRAY_TYPE)
{
/* A multidimensional array; recurse. */
- if (value_init)
+ if (value_init || init == NULL_TREE)
eltinit = NULL_TREE;
else
eltinit = cp_build_array_ref (input_location, init, idx,
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 57a5dc8..a64fd8b 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2011-12-19 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/51619
+ * g++.dg/cpp0x/pr51619.C: New test.
+
2011-12-19 Tobias Burnus <burnus@net-b.de>
PR fortran/51605
diff --git a/gcc/testsuite/g++.dg/cpp0x/pr51619.C b/gcc/testsuite/g++.dg/cpp0x/pr51619.C
new file mode 100644
index 0000000..dd51679
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/pr51619.C
@@ -0,0 +1,7 @@
+// PR c++/51619
+// { dg-do compile }
+// { dg-options "-std=c++0x" }
+
+struct A { virtual ~A(); };
+struct B { A a[1][1]; } b;
+struct C { A a[3][3]; } c;