OSDN Git Service

PR c++/51619
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 19 Dec 2011 15:38:06 +0000 (15:38 +0000)
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 19 Dec 2011 15:38:06 +0000 (15:38 +0000)
* 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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@182485 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/cp/ChangeLog
gcc/cp/semantics.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/cpp0x/pr51619.C [new file with mode: 0644]

index d8b30df..d9e1949 100644 (file)
@@ -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.
 
index e73b40a..2788daa 100644 (file)
@@ -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,
index 57a5dc8..a64fd8b 100644 (file)
@@ -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 (file)
index 0000000..dd51679
--- /dev/null
@@ -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;