summaryrefslogtreecommitdiffstats
path: root/clang/lib
diff options
context:
space:
mode:
Diffstat (limited to 'clang/lib')
-rw-r--r--clang/lib/Sema/SemaTemplate.cpp33
1 files changed, 2 insertions, 31 deletions
diff --git a/clang/lib/Sema/SemaTemplate.cpp b/clang/lib/Sema/SemaTemplate.cpp
index 73b5c44b599..59e984dd93e 100644
--- a/clang/lib/Sema/SemaTemplate.cpp
+++ b/clang/lib/Sema/SemaTemplate.cpp
@@ -7367,29 +7367,6 @@ Sema::ActOnExplicitInstantiation(Scope *S,
}
}
- // In MSVC mode, dllimported explicit instantiation definitions are treated as
- // instantiation declarations for most purposes.
- bool DLLImportExplicitInstantiationDef = false;
- if (TSK == TSK_ExplicitInstantiationDefinition &&
- Context.getTargetInfo().getCXXABI().isMicrosoft()) {
- // Check for dllimport class template instantiation definitions.
- bool DLLImport =
- ClassTemplate->getTemplatedDecl()->getAttr<DLLImportAttr>();
- for (AttributeList *A = Attr; A; A = A->getNext()) {
- if (A->getKind() == AttributeList::AT_DLLImport)
- DLLImport = true;
- if (A->getKind() == AttributeList::AT_DLLExport) {
- // dllexport trumps dllimport here.
- DLLImport = false;
- break;
- }
- }
- if (DLLImport) {
- TSK = TSK_ExplicitInstantiationDeclaration;
- DLLImportExplicitInstantiationDef = true;
- }
- }
-
// Translate the parser's template argument list in our AST format.
TemplateArgumentListInfo TemplateArgs(LAngleLoc, RAngleLoc);
translateTemplateArguments(TemplateArgsIn, TemplateArgs);
@@ -7443,12 +7420,6 @@ Sema::ActOnExplicitInstantiation(Scope *S,
Specialization->setLocation(TemplateNameLoc);
PrevDecl = nullptr;
}
-
- if (PrevDecl_TSK == TSK_ExplicitInstantiationDeclaration &&
- DLLImportExplicitInstantiationDef) {
- // The new specialization might add a dllimport attribute.
- HasNoEffect = false;
- }
}
if (!Specialization) {
@@ -7526,11 +7497,11 @@ Sema::ActOnExplicitInstantiation(Scope *S,
Specialization->getDefinition());
if (Def) {
TemplateSpecializationKind Old_TSK = Def->getTemplateSpecializationKind();
+
// Fix a TSK_ExplicitInstantiationDeclaration followed by a
// TSK_ExplicitInstantiationDefinition
if (Old_TSK == TSK_ExplicitInstantiationDeclaration &&
- (TSK == TSK_ExplicitInstantiationDefinition ||
- DLLImportExplicitInstantiationDef)) {
+ TSK == TSK_ExplicitInstantiationDefinition) {
// FIXME: Need to notify the ASTMutationListener that we did this.
Def->setTemplateSpecializationKind(TSK);
OpenPOWER on IntegriCloud