aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp
diff options
context:
space:
mode:
authorPatrick Palka <ppalka@gcc.gnu.org>2016-09-19 18:12:36 +0000
committerPatrick Palka <ppalka@gcc.gnu.org>2016-09-19 18:12:36 +0000
commit6101a7ab878f784558c908d6e4773d49b0858e0e (patch)
tree418e0d7e8d09dbc87f2f70bec91de96afdb2fdff /gcc/cp
parentd0f5943566482b094ac600e63271c22ebf227c5f (diff)
downloadgcc-6101a7ab878f784558c908d6e4773d49b0858e0e.zip
gcc-6101a7ab878f784558c908d6e4773d49b0858e0e.tar.gz
gcc-6101a7ab878f784558c908d6e4773d49b0858e0e.tar.bz2
Fix PR c++/77639 (ICE during error recovery)
gcc/cp/ChangeLog: PR c++/77639 * parser.c (cp_parser_class_head): When processing_template_parmlist, don't assume that the class-head may start an explicit specialization. gcc/testsuite/ChangeLog: PR c++/77639 * g++.dg/template/error-recovery4.C: New test. From-SVN: r240245
Diffstat (limited to 'gcc/cp')
-rw-r--r--gcc/cp/ChangeLog7
-rw-r--r--gcc/cp/parser.c1
2 files changed, 8 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 9d74bdb..e4bd392 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,10 @@
+2016-09-16 Patrick Palka <ppalka@gcc.gnu.org>
+
+ PR c++/77639
+ * parser.c (cp_parser_class_head): When
+ processing_template_parmlist, don't assume that the
+ class-head may start an explicit specialization.
+
2016-09-16 Jakub Jelinek <jakub@redhat.com>
PR c++/77482
diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
index fb88021..c03b9c2 100644
--- a/gcc/cp/parser.c
+++ b/gcc/cp/parser.c
@@ -22025,6 +22025,7 @@ cp_parser_class_head (cp_parser* parser,
it is not, try to recover gracefully. */
if (at_namespace_scope_p ()
&& parser->num_template_parameter_lists == 0
+ && !processing_template_parmlist
&& template_id_p)
{
/* Build a location of this form: