diff options
Diffstat (limited to 'clang/lib')
-rw-r--r-- | clang/lib/Sema/SemaTemplate.cpp | 33 |
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); |