diff options
author | Jakub Jelinek <jakub@redhat.com> | 2011-12-19 16:38:06 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2011-12-19 16:38:06 +0100 |
commit | 23a3541f271216b1a518ecb6f713500b76949172 (patch) | |
tree | 870e64d07402b28f8b627125be106ac5ceb754bb /gcc | |
parent | cd99c23ca41f9fb6792e39f0e91a950cf1e531aa (diff) | |
download | gcc-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/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/cp/semantics.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/pr51619.C | 7 |
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; |