c++: local externs in templates do not get template head
authorNathan Sidwell <nathan@acm.org>
Mon, 14 Sep 2020 16:42:29 +0000 (09:42 -0700)
committerNathan Sidwell <nathan@acm.org>
Mon, 14 Sep 2020 16:45:24 +0000 (09:45 -0700)
commite9fdb9a73249f95f3da2d7fde6f268ae12d0d22c
treebc6b255876ccd75fd7e03e5d271d7b929305ce96
parent05ab8befe1230c46116aae37d44f2ce0933e8dae
c++: local externs in templates do not get template head

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.
gcc/cp/pt.c