aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMarek Polacek <polacek@redhat.com>2018-03-02 17:54:23 +0000
committerMarek Polacek <mpolacek@gcc.gnu.org>2018-03-02 17:54:23 +0000
commit8c8f2ab7081d2e14b637c57583072392c3aeac88 (patch)
tree1483aee8a3827ba1a12096ad301895230f0be44d /gcc
parent0805d020d789e40557531df22565eae7809e7f17 (diff)
downloadgcc-8c8f2ab7081d2e14b637c57583072392c3aeac88.zip
gcc-8c8f2ab7081d2e14b637c57583072392c3aeac88.tar.gz
gcc-8c8f2ab7081d2e14b637c57583072392c3aeac88.tar.bz2
re PR c++/84663 (internal compiler error: tree check: expected array_type, have error_mark in cp_complete_array_type, at cp/decl.c:8334)
PR c++/84663 * decl.c (cp_complete_array_type): Check error_mark_node. * g++.dg/parse/array-size3.C: New test. From-SVN: r258148
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/decl.c2
-rw-r--r--gcc/testsuite/ChangeLog3
-rw-r--r--gcc/testsuite/g++.dg/parse/array-size3.C7
4 files changed, 16 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 79e0d8f..29287c8 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+2018-03-02 Marek Polacek <polacek@redhat.com>
+
+ PR c++/84663
+ * decl.c (cp_complete_array_type): Check error_mark_node.
+
2018-03-02 Jakub Jelinek <jakub@redhat.com>
PR c++/84662
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
index 735ed5d..1866e8f 100644
--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -8323,7 +8323,7 @@ cp_complete_array_type (tree *ptype, tree initial_value, bool do_default)
bits. See also complete_type which does the same thing for arrays
of fixed size. */
type = *ptype;
- if (TYPE_DOMAIN (type))
+ if (type != error_mark_node && TYPE_DOMAIN (type))
{
elt_type = TREE_TYPE (type);
TYPE_NEEDS_CONSTRUCTING (type) = TYPE_NEEDS_CONSTRUCTING (elt_type);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index a848cd3f..4216072 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -3,6 +3,9 @@
PR c++/84171
* g++.dg/warn/Wsign-compare-8.C: New test.
+ PR c++/84663
+ * g++.dg/parse/array-size3.C: New test.
+
2018-03-02 Jakub Jelinek <jakub@redhat.com>
PR c++/84662
diff --git a/gcc/testsuite/g++.dg/parse/array-size3.C b/gcc/testsuite/g++.dg/parse/array-size3.C
new file mode 100644
index 0000000..c3a824a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/array-size3.C
@@ -0,0 +1,7 @@
+// PR c++/84663
+
+struct S {
+ typedef S T[8];
+ int f : -1ULL; // { dg-warning "exceeds its type" }
+ S () { struct { T d; } e[]; } // { dg-error "size" }
+};