On Mon, Sep 14, 2020 at 12:45:33PM -0400, Nathan Sidwell wrote: > Now we consistently mark local externs with DECL_LOCAL_DECL_P, we can > teach the template machinery not to give them a TEMPLATE_DECL head, > and the instantiation machinery treat them as the local specialiations > they are. (openmp UDRs also fall into this category, and are dealt > with similarly.) > > gcc/cp/ > * pt.c (push_template_decl_real): Don't attach a template head to > local externs. > (tsubst_function_decl): Add support for headless local extern > decls. > (tsubst_decl): Add support for headless local extern decls. > > pushed to trunk > -- > Nathan Sidwell
> diff --git i/gcc/cp/pt.c w/gcc/cp/pt.c > index 0f52a9ed77d..8124efcbe24 100644 > --- i/gcc/cp/pt.c > +++ w/gcc/cp/pt.c > @@ -6071,7 +6071,11 @@ push_template_decl_real (tree decl, bool is_friend) > { > if (is_primary) > retrofit_lang_decl (decl); > - if (DECL_LANG_SPECIFIC (decl)) > + if (DECL_LANG_SPECIFIC (decl) > + && ((TREE_CODE (decl) != VAR_DECL > + && TREE_CODE (decl) != FUNCTION_DECL) This is !VAR_OR_FUNCTION_DECL_P. Want me to "fix" that as obvious? Marek