diff options
author | Eric Botcazou <ebotcazou@adacore.com> | 2015-11-26 12:04:50 +0000 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2015-11-26 12:04:50 +0000 |
commit | 89a01fcf4cff990c0d25d048ae01abb476070d05 (patch) | |
tree | f24a3de5b3494c6c366d702ed408f860d8e5b571 /gcc | |
parent | d083907f1fe77f592eec0d427f9a114957f52f45 (diff) | |
download | gcc-89a01fcf4cff990c0d25d048ae01abb476070d05.zip gcc-89a01fcf4cff990c0d25d048ae01abb476070d05.tar.gz gcc-89a01fcf4cff990c0d25d048ae01abb476070d05.tar.bz2 |
re PR c++/68527 (ICE with -fdump-ada-spec on invalid C++ 11 code)
PR c++/68527
* c-ada-spec.c (dump_nested_types): Add guard for error_mark_node.
(print_ada_struct_decl): Likewise.
From-SVN: r230942
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/c-family/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/c-family/c-ada-spec.c | 10 |
2 files changed, 12 insertions, 4 deletions
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index 6e7b0f7..595fc3a 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,3 +1,9 @@ +2015-11-26 Eric Botcazou <ebotcazou@adacore.com> + + PR c++/68527 + * c-ada-spec.c (dump_nested_types): Add guard for error_mark_node. + (print_ada_struct_decl): Likewise. + 2015-11-23 Igor Zamyatin <igor.zamyatin@intel.com> PR c++/68001 diff --git a/gcc/c-family/c-ada-spec.c b/gcc/c-family/c-ada-spec.c index e85c1a9..3726a68 100644 --- a/gcc/c-family/c-ada-spec.c +++ b/gcc/c-family/c-ada-spec.c @@ -2461,7 +2461,8 @@ dump_nested_types (pretty_printer *buffer, tree t, tree parent, bool forward, field = TYPE_FIELDS (outer); while (field) { - if ((TREE_TYPE (field) != outer + if (((TREE_TYPE (field) != outer + && TREE_TYPE (field) != error_mark_node) || (TREE_CODE (TREE_TYPE (field)) == POINTER_TYPE && TREE_TYPE (TREE_TYPE (field)) != outer)) && (!TYPE_NAME (TREE_TYPE (field)) @@ -3230,9 +3231,10 @@ print_ada_struct_decl (pretty_printer *buffer, tree node, tree type, int spc, } } /* Avoid printing the structure recursively. */ - else if ((TREE_TYPE (tmp) != node - || (TREE_CODE (TREE_TYPE (tmp)) == POINTER_TYPE - && TREE_TYPE (TREE_TYPE (tmp)) != node)) + else if (((TREE_TYPE (tmp) != node + && TREE_TYPE (tmp) != error_mark_node) + || (TREE_CODE (TREE_TYPE (tmp)) == POINTER_TYPE + && TREE_TYPE (TREE_TYPE (tmp)) != node)) && TREE_CODE (tmp) != TYPE_DECL && !TREE_STATIC (tmp)) { |