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.
This commit is contained in:
parent
cb7fd1ea85
commit
f9b5a8e58d
1 changed files with 8 additions and 2 deletions
10
gcc/cp/pt.cc
10
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);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue