]> git.ipfire.org Git - thirdparty/gcc.git/commit
c++: friend template matching [PR107484]
authorJason Merrill <jason@redhat.com>
Mon, 3 Apr 2023 22:23:58 +0000 (18:23 -0400)
committerJason Merrill <jason@redhat.com>
Tue, 4 Apr 2023 03:20:27 +0000 (23:20 -0400)
commit0dfbb28a9549c2503204b0338bf550f1bff9c681
tree5ec58c937f3e815881de0cb4ce0eaa522172eaaa
parent59b4a555c3f1c3dba376da1c4886a9ea18ad208d
c++: friend template matching [PR107484]

Here friend matching tries to find a matching non-template friend and fails,
so we mark the friend as a template specialization to be determined later.
Then cplus_decl_attributes tries again to find a matching function and gets
confused by DECL_TEMPLATE_INSTANTIATION without DECL_TEMPLATE_INFO.  But it
doesn't make sense for find_last_decl to be trying to match anything with
DECL_USE_TEMPLATE set; those are matched elsewhere.

PR c++/107484

gcc/cp/ChangeLog:

* decl2.cc (find_last_decl): Return early if DECL_USE_TEMPLATE.

gcc/testsuite/ChangeLog:

* g++.dg/lookup/friend25.C: New test.
gcc/cp/decl2.cc
gcc/testsuite/g++.dg/lookup/friend25.C [new file with mode: 0644]