From 2c9c6adac944e2705131400a24570ae884388c71 Mon Sep 17 00:00:00 2001 From: Jason Merrill Date: Thu, 10 May 2018 14:41:00 -0400 Subject: [PATCH] * parser.c (cp_parser_class_head): Use num_template_headers_for_class. From-SVN: r260125 --- gcc/cp/ChangeLog | 2 ++ gcc/cp/parser.c | 15 +-------------- 2 files changed, 3 insertions(+), 14 deletions(-) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 02d35cb..76a7087 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,7 @@ 2018-05-09 Jason Merrill + * parser.c (cp_parser_class_head): Use num_template_headers_for_class. + * pt.c (instantiate_decl): Make sure we aren't trying to do a nested instantiation in template context. diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index 88db998..82b8ef8 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -22930,20 +22930,7 @@ cp_parser_class_head (cp_parser* parser, /* Otherwise, count the number of templates used in TYPE and its containing scopes. */ else - { - tree scope; - - for (scope = TREE_TYPE (type); - scope && TREE_CODE (scope) != NAMESPACE_DECL; - scope = get_containing_scope (scope)) - if (TYPE_P (scope) - && CLASS_TYPE_P (scope) - && CLASSTYPE_TEMPLATE_INFO (scope) - && PRIMARY_TEMPLATE_P (CLASSTYPE_TI_TEMPLATE (scope)) - && (!CLASSTYPE_TEMPLATE_SPECIALIZATION (scope) - || uses_template_parms (CLASSTYPE_TI_ARGS (scope)))) - ++num_templates; - } + num_templates = num_template_headers_for_class (TREE_TYPE (type)); } /* Otherwise, the identifier is optional. */ else -- 2.7.4