diff options
author | Paolo Carlini <paolo.carlini@oracle.com> | 2013-10-01 18:45:12 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2013-10-01 18:45:12 +0000 |
commit | 4393907184b9c9f0427ffa9a6b6800474dfee80d (patch) | |
tree | cf8e510eb983bc7c967bda2e6f2a1ea606529900 | |
parent | 25c606cb1819de7e656282cbb403ed66c3a6bd21 (diff) | |
download | gcc-4393907184b9c9f0427ffa9a6b6800474dfee80d.zip gcc-4393907184b9c9f0427ffa9a6b6800474dfee80d.tar.gz gcc-4393907184b9c9f0427ffa9a6b6800474dfee80d.tar.bz2 |
re PR c++/58563 ([c++11] ICE calling invalid destructor)
/cp
2013-10-01 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/58563
* parser.c (cp_parser_lookup_name): Check make_typename_type return
value for error_mark_node.
/testsuite
2013-10-01 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/58563
* g++.dg/cpp0x/pr58563.C: New.
From-SVN: r203079
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/parser.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/pr58563.C | 8 |
4 files changed, 21 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 01867fb..1ec1cd3 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2013-10-01 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/58563 + * parser.c (cp_parser_lookup_name): Check make_typename_type return + value for error_mark_node. + 2013-09-25 Tom Tromey <tromey@redhat.com> * Make-lang.in (CXX_TREE_H, CXX_PARSER_H, CXX_PRETTY_PRINT_H): diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index f3133f3..5e68b36 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -21756,7 +21756,8 @@ cp_parser_lookup_name (cp_parser *parser, tree name, is dependent. */ type = make_typename_type (parser->scope, name, tag_type, /*complain=*/tf_error); - decl = TYPE_NAME (type); + if (type != error_mark_node) + decl = TYPE_NAME (type); } else if (is_template && (cp_parser_next_token_ends_template_argument_p (parser) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index d4bee48..cb2f58c 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-10-01 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/58563 + * g++.dg/cpp0x/pr58563.C: New. + 2013-10-01 Vidya Praveen <vidyapraveen@arm.com> * gcc.target/aarch64/vect_saddl_1.c: New. diff --git a/gcc/testsuite/g++.dg/cpp0x/pr58563.C b/gcc/testsuite/g++.dg/cpp0x/pr58563.C new file mode 100644 index 0000000..c9e3e30 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/pr58563.C @@ -0,0 +1,8 @@ +// PR c++/58563 +// { dg-do compile { target c++11 } } + +template<int> void foo() +{ + enum E {}; + E().E::~T(); // { dg-error "not a class" } +} |