diff options
author | Marek Polacek <polacek@redhat.com> | 2018-03-02 17:54:23 +0000 |
---|---|---|
committer | Marek Polacek <mpolacek@gcc.gnu.org> | 2018-03-02 17:54:23 +0000 |
commit | 8c8f2ab7081d2e14b637c57583072392c3aeac88 (patch) | |
tree | 1483aee8a3827ba1a12096ad301895230f0be44d /gcc | |
parent | 0805d020d789e40557531df22565eae7809e7f17 (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/decl.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/parse/array-size3.C | 7 |
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" } +}; |