aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2013-10-01 18:45:12 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2013-10-01 18:45:12 +0000
commit4393907184b9c9f0427ffa9a6b6800474dfee80d (patch)
treecf8e510eb983bc7c967bda2e6f2a1ea606529900 /gcc
parent25c606cb1819de7e656282cbb403ed66c3a6bd21 (diff)
downloadgcc-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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/parser.c3
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/pr58563.C8
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" }
+}