https://github.com/mizvekov closed
https://github.com/llvm/llvm-project/pull/110387
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
@@ -1008,6 +1008,15 @@ class FunctionTemplateDecl : public
RedeclarableTemplateDecl {
return getTemplatedDecl()->isThisDeclarationADefinition();
}
+ bool isCompatibleWithDefinition() const {
+return getTemplatedDecl()->isInstantiatedFromMemberTemplate() ||
+
@@ -1008,6 +1008,15 @@ class FunctionTemplateDecl : public
RedeclarableTemplateDecl {
return getTemplatedDecl()->isThisDeclarationADefinition();
}
+ bool isCompatibleWithDefinition() const {
+return getTemplatedDecl()->isInstantiatedFromMemberTemplate() ||
+
@@ -1008,6 +1008,15 @@ class FunctionTemplateDecl : public
RedeclarableTemplateDecl {
return getTemplatedDecl()->isThisDeclarationADefinition();
}
+ bool isCompatibleWithDefinition() const {
+return getTemplatedDecl()->isInstantiatedFromMemberTemplate() ||
+
mizvekov wrote:
Now this is rebased on top of the `getTemplateInstantiationArgs` refactoring.
https://github.com/llvm/llvm-project/pull/110387
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-c
https://github.com/mizvekov updated
https://github.com/llvm/llvm-project/pull/110387
>From 28e582bc3b3058aa5ba946c9eb9b3d0e989b5c28 Mon Sep 17 00:00:00 2001
From: Matheus Izvekov
Date: Sat, 28 Sep 2024 14:28:58 -0300
Subject: [PATCH] [clang] Track function template instantiation from definition
https://github.com/mizvekov edited
https://github.com/llvm/llvm-project/pull/110387
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
https://github.com/mizvekov updated
https://github.com/llvm/llvm-project/pull/110387
>From 226b1bea7b287f31f4dc8d57466c8af5c6012c4e Mon Sep 17 00:00:00 2001
From: Matheus Izvekov
Date: Sat, 28 Sep 2024 14:28:58 -0300
Subject: [PATCH] [clang] Track function template instantiation from definition
https://github.com/zyn0217 edited
https://github.com/llvm/llvm-project/pull/110387
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
https://github.com/zyn0217 edited
https://github.com/llvm/llvm-project/pull/110387
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
@@ -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() &&
- !
https://github.com/mizvekov updated
https://github.com/llvm/llvm-project/pull/110387
>From e6d3e6f1df5db1618c7302adac4b45b7aa451a34 Mon Sep 17 00:00:00 2001
From: Matheus Izvekov
Date: Sat, 28 Sep 2024 14:28:58 -0300
Subject: [PATCH] [clang] Track function template instantiation from definition
@@ -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() &&
- !
@@ -5185,9 +5189,24 @@ void Sema::InstantiateFunctionDefinition(SourceLocation
PointOfInstantiation,
RebuildTypeSourceInfoForDefaultSpecialMembers();
SetDeclDefaulted(Function, PatternDecl->getLocation());
} else {
+NamedDecl *ND = Function;
+std::optional> I
@@ -5185,9 +5189,24 @@ void Sema::InstantiateFunctionDefinition(SourceLocation
PointOfInstantiation,
RebuildTypeSourceInfoForDefaultSpecialMembers();
SetDeclDefaulted(Function, PatternDecl->getLocation());
} else {
+NamedDecl *ND = Function;
+std::optional> I
@@ -492,8 +489,10 @@ MultiLevelTemplateArgumentList
Sema::getTemplateInstantiationArgs(
// has a depth of 0.
if (const auto *TTP = dyn_cast(CurDecl))
HandleDefaultTempArgIntoTempTempParam(TTP, Result);
-CurDecl = Response::UseNextDecl(CurDecl).NextDecl;
- }
@@ -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() &&
- !
https://github.com/zyn0217 commented:
Thanks for taking another look at it.
My main concern is that changes in `getTemplateInstantiationArgs()` would
conflict with @sdkrystian's recent work, so if these changes are necessary, I
suggest we merge this one after the refactoring patch lands, WDYT?
@@ -1829,7 +1831,7 @@ class DeclContext {
/// exactly 64 bits and thus the width of NumCtorInitializers
/// will need to be shrunk if some bit is added to NumDeclContextBitfields,
/// NumFunctionDeclBitfields or CXXConstructorDeclBitfields.
-uint64_t NumCtorInit
@@ -492,8 +489,10 @@ MultiLevelTemplateArgumentList
Sema::getTemplateInstantiationArgs(
// has a depth of 0.
if (const auto *TTP = dyn_cast(CurDecl))
HandleDefaultTempArgIntoTempTempParam(TTP, Result);
-CurDecl = Response::UseNextDecl(CurDecl).NextDecl;
- }
@@ -492,8 +489,10 @@ MultiLevelTemplateArgumentList
Sema::getTemplateInstantiationArgs(
// has a depth of 0.
if (const auto *TTP = dyn_cast(CurDecl))
HandleDefaultTempArgIntoTempTempParam(TTP, Result);
-CurDecl = Response::UseNextDecl(CurDecl).NextDecl;
- }
https://github.com/zyn0217 edited
https://github.com/llvm/llvm-project/pull/110387
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
@@ -5185,9 +5189,24 @@ void Sema::InstantiateFunctionDefinition(SourceLocation
PointOfInstantiation,
RebuildTypeSourceInfoForDefaultSpecialMembers();
SetDeclDefaulted(Function, PatternDecl->getLocation());
} else {
+NamedDecl *ND = Function;
+std::optional> I
mizvekov wrote:
I pushed a new implementation for this fix.
I have updated the implementation of InstantiateFunctionDefinition so that it
doesn't depend anymore on having the exact function declaration instantiation
which has the same template context as the definition.
This avoids the more e
https://github.com/mizvekov edited
https://github.com/llvm/llvm-project/pull/110387
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
https://github.com/mizvekov edited
https://github.com/llvm/llvm-project/pull/110387
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
26 matches
Mail list logo