aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2018-01-10 16:37:22 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2018-01-10 16:37:22 +0000
commit143aa5cc4ae329f6f0720d091569c71e1fc8db73 (patch)
tree7260717859d12b7d4482f13fbc5a0913db71b05c /gcc
parent389578d7a660986712eefc1785c9278d3457cd7a (diff)
downloadgcc-143aa5cc4ae329f6f0720d091569c71e1fc8db73.zip
gcc-143aa5cc4ae329f6f0720d091569c71e1fc8db73.tar.gz
gcc-143aa5cc4ae329f6f0720d091569c71e1fc8db73.tar.bz2
re PR c++/81055 (ICE with invalid initializer for array new)
/cp 2018-01-10 Paolo Carlini <paolo.carlini@oracle.com> PR c++/81055 * init.c (build_vec_init): Avoid building an INIT_EXPR with error_mark_node as second argument. /testsuite 2018-01-10 Paolo Carlini <paolo.carlini@oracle.com> PR c++/81055 * g++.dg/cpp0x/new2.C: New. From-SVN: r256438
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/init.c4
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/new2.C4
4 files changed, 18 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 54860dc..9b6f462 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2018-01-10 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/81055
+ * init.c (build_vec_init): Avoid building an INIT_EXPR with
+ error_mark_node as second argument.
+
2018-01-09 Jakub Jelinek <jakub@redhat.com>
PR c++/83734
diff --git a/gcc/cp/init.c b/gcc/cp/init.c
index 6c820e5..1be7c67 100644
--- a/gcc/cp/init.c
+++ b/gcc/cp/init.c
@@ -4399,7 +4399,9 @@ build_vec_init (tree base, tree maxindex, tree init,
if (TREE_CODE (init) == TREE_LIST)
init = build_x_compound_expr_from_list (init, ELK_INIT,
complain);
- elt_init = build2 (INIT_EXPR, type, to, init);
+ elt_init = (init == error_mark_node
+ ? error_mark_node
+ : build2 (INIT_EXPR, type, to, init));
}
}
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index a46a5ee..dca24d8 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2018-01-10 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/81055
+ * g++.dg/cpp0x/new2.C: New.
+
2018-01-10 H.J. Lu <hongjiu.lu@intel.com>
PR target/83735
diff --git a/gcc/testsuite/g++.dg/cpp0x/new2.C b/gcc/testsuite/g++.dg/cpp0x/new2.C
new file mode 100644
index 0000000..f0bbc80
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/new2.C
@@ -0,0 +1,4 @@
+// PR c++/81055
+// { dg-do compile { target c++11 } }
+
+int** p = new int*[1]{q}; // { dg-error "not declared" }