c++: uninstantiated template friends
authorNathan Sidwell <nathan@acm.org>
Thu, 3 Dec 2020 19:12:08 +0000 (11:12 -0800)
committerNathan Sidwell <nathan@acm.org>
Thu, 3 Dec 2020 20:40:09 +0000 (12:40 -0800)
commitf7aeb823d9b0dee572015810cdb58103e91758f3
tree57293338b9480879708331ced711d7dd83045e6c
parent3089f5feef36810c625b5813370a97b4ecc841f8
c++: uninstantiated template friends

template friends need to be recognized by module streaming and
associated with the befriending class.  but their context is that of
the friend (a namespace or other class).  This adds a flag to mark
such templates, and uses their DECL_CHAIN to point at the befriender.

gcc/cp
* cp-tree.h (DECL_UNINSTANTIATED_TEMPLATE_FRIEND): New.
* pt.c (push_template_decl): Set it.
(tsubst_friend_function): Clear it.
gcc/cp/cp-tree.h
gcc/cp/pt.c