From: Peter Collingbourne Date: Tue, 21 Mar 2017 02:02:41 +0000 (+0000) Subject: IRGen: Do not set dllexport on declarations. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=5f5f6d1226b8977ca12b009bb82ed983653d4ac3;p=clang IRGen: Do not set dllexport on declarations. Setting dllexport on a declaration has no effect, as we do not emit export directives for declarations. Part of the fix for PR32334. Differential Revision: https://reviews.llvm.org/D31162 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@298330 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/CodeGenModule.cpp b/lib/CodeGen/CodeGenModule.cpp index d6b0d38633..a6cfa4fa42 100644 --- a/lib/CodeGen/CodeGenModule.cpp +++ b/lib/CodeGen/CodeGenModule.cpp @@ -1036,7 +1036,6 @@ static void setLinkageAndVisibilityForGV(llvm::GlobalValue *GV, GV->setDLLStorageClass(llvm::GlobalValue::DLLImportStorageClass); } else if (ND->hasAttr()) { GV->setLinkage(llvm::GlobalValue::ExternalLinkage); - GV->setDLLStorageClass(llvm::GlobalValue::DLLExportStorageClass); } else if (ND->hasAttr() || ND->isWeakImported()) { // "extern_weak" is overloaded in LLVM; we probably should have // separate linkage types for this. diff --git a/test/CodeGenCXX/dllexport.cpp b/test/CodeGenCXX/dllexport.cpp index 33e524cc9b..bdef2eb06e 100644 --- a/test/CodeGenCXX/dllexport.cpp +++ b/test/CodeGenCXX/dllexport.cpp @@ -108,8 +108,8 @@ inline int __declspec(dllexport) inlineStaticLocalsFunc() { template __declspec(dllexport) int VarTmplDef; INSTVAR(VarTmplDef) -// MSC-DAG: @"\01??$VarTmplImplicitDef@UImplicitInst_Exported@@@@3HA" = external dllexport global -// GNU-DAG: @_Z18VarTmplImplicitDefI21ImplicitInst_ExportedE = external dllexport global +// MSC-DAG: @"\01??$VarTmplImplicitDef@UImplicitInst_Exported@@@@3HA" = external global +// GNU-DAG: @_Z18VarTmplImplicitDefI21ImplicitInst_ExportedE = external global template __declspec(dllexport) int VarTmplImplicitDef; USEVAR(VarTmplImplicitDef) @@ -528,7 +528,7 @@ struct __declspec(dllexport) T { // M32-DAG: define weak_odr dllexport x86_thiscallcc void @"\01?a@T@@QAEXXZ" static int b; - // M32-DAG: @"\01?b@T@@2HA" = external dllexport global i32 + // M32-DAG: @"\01?b@T@@2HA" = external global i32 static int c; // M32-DAG: @"\01?c@T@@2HA" = dllexport global i32 0, align 4