diff options
author | Hans Wennborg <hans@hanshq.net> | 2016-05-25 20:49:14 +0000 |
---|---|---|
committer | Hans Wennborg <hans@hanshq.net> | 2016-05-25 20:49:14 +0000 |
commit | bfc1a469d5f35cc182c79c9d1c9cb8b611849a72 (patch) | |
tree | 6b3f308b0aab516e0c047bf675192a93a1e31b9e /clang/lib | |
parent | 4810683ddf57df9b45d0f67bb3de6c0d6e5a94e7 (diff) | |
download | bcm5719-llvm-bfc1a469d5f35cc182c79c9d1c9cb8b611849a72.tar.gz bcm5719-llvm-bfc1a469d5f35cc182c79c9d1c9cb8b611849a72.zip |
Revert r270748 "clang-cl: Treat dllimport explicit template instantiation definitions as declarations (PR27810, PR27811)"
It seems to have broken the sanitizer-windows bot.
Reverting while investigating.
llvm-svn: 270754
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); |