From: Patrick Palka Date: Fri, 10 Jun 2022 20:09:58 +0000 (-0400) Subject: c++: optimize specialization of templated member functions X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f9b5a8e58dfd0642bea932d449ad46da9e57396f;p=platform%2Fupstream%2Fgcc.git c++: optimize specialization of templated member functions This applies one of the lookup_template_class optimizations from the previous patch to instantiate_template as well. gcc/cp/ChangeLog: * pt.cc (instantiate_template): Don't substitute the context of the most general template if that of the partially instantiated template is already non-dependent. --- diff --git a/gcc/cp/pt.cc b/gcc/cp/pt.cc index 079cadf..1f91fc2 100644 --- a/gcc/cp/pt.cc +++ b/gcc/cp/pt.cc @@ -21714,8 +21714,14 @@ instantiate_template (tree tmpl, tree orig_args, tsubst_flags_t complain) ++processing_template_decl; if (DECL_CLASS_SCOPE_P (gen_tmpl)) { - tree ctx = tsubst_aggr_type (DECL_CONTEXT (gen_tmpl), targ_ptr, - complain, gen_tmpl, true); + tree ctx; + if (!uses_template_parms (DECL_CONTEXT (tmpl))) + /* If the context of the partially instantiated template is + already non-dependent, then we might as well use it. */ + ctx = DECL_CONTEXT (tmpl); + else + ctx = tsubst_aggr_type (DECL_CONTEXT (gen_tmpl), targ_ptr, + complain, gen_tmpl, true); push_nested_class (ctx); }