[clang] [clang] Track function template instantiation from definition (PR #110387)
Matheus Izvekov via cfe-commits
cfe-commits at lists.llvm.org
Sat Oct 5 19:21:25 PDT 2024
================
@@ -1994,8 +1995,10 @@ TemplateDeclInstantiator::VisitFunctionTemplateDecl(FunctionTemplateDecl *D) {
// Link the instantiation back to the pattern *unless* this is a
// non-definition friend declaration.
if (!InstTemplate->getInstantiatedFromMemberTemplate() &&
- !(isFriend && !D->getTemplatedDecl()->isThisDeclarationADefinition()))
+ !(isFriend && !D->getTemplatedDecl()->isThisDeclarationADefinition())) {
+ InstTemplate->setInstantiatedFromDefinition();
----------------
mizvekov wrote:
That's true, but the only problematic cases are the friends.
We could make the flag more accurate, as named, for non-friends, but then we don't have a motivation, and we would make searching for a declaration which is compatible with the definition slightly more expensive for those.
Another option is to rename the flag to something like `InstantiatedFromDefinitionForFriend`.
https://github.com/llvm/llvm-project/pull/110387
More information about the cfe-commits
mailing list