diff options
author | Jason Merrill <jason@redhat.com> | 2011-12-17 15:15:39 -0500 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2011-12-17 15:15:39 -0500 |
commit | 9bd98b5ac355c21583e5de8eed090ef3aeb7cecc (patch) | |
tree | 34c747692c890bf8e4dabba390c070ee385be2b9 | |
parent | c0425f32f5e469d41e5e1c899f20839fdeffe0f1 (diff) | |
download | gcc-9bd98b5ac355c21583e5de8eed090ef3aeb7cecc.zip gcc-9bd98b5ac355c21583e5de8eed090ef3aeb7cecc.tar.gz gcc-9bd98b5ac355c21583e5de8eed090ef3aeb7cecc.tar.bz2 |
re PR c++/51586 (ICE with invalid union)
PR c++/51586
* parser.c (cp_parser_check_class_key): Handle error_mark_node.
From-SVN: r182442
-rw-r--r-- | gcc/cp/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/cp/parser.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/lookup/nested2.C | 6 |
4 files changed, 14 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index a63aa16..898a6bf 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,8 @@ 2011-12-17 Jason Merrill <jason@redhat.com> + PR c++/51586 + * parser.c (cp_parser_check_class_key): Handle error_mark_node. + PR c++/51587 * decl.c (start_enum): Avoid using ENUM_UNDERLYING_TYPE on a non-enum. diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index 30c7745..ac7427e 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -22624,6 +22624,8 @@ cp_parser_token_is_class_key (cp_token* token) static void cp_parser_check_class_key (enum tag_types class_key, tree type) { + if (type == error_mark_node) + return; if ((TREE_CODE (type) == UNION_TYPE) != (class_key == union_type)) { permerror (input_location, "%qs tag used in naming %q#T", diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 71194f5..066121d 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,8 @@ 2011-12-17 Jason Merrill <jason@redhat.com> + PR c++/51586 + * g++.dg/lookup/nested2.C: New. + PR c++/51587 * g++.dg/parse/enum6.C: New. diff --git a/gcc/testsuite/g++.dg/lookup/nested2.C b/gcc/testsuite/g++.dg/lookup/nested2.C new file mode 100644 index 0000000..361a0c7 --- /dev/null +++ b/gcc/testsuite/g++.dg/lookup/nested2.C @@ -0,0 +1,6 @@ +// PR c++/51586 + +union U +{ + union U { int i; }; // { dg-error "same name" } +}; |