]> granicus.if.org Git - clang/commitdiff
IRGen: Do not set dllexport on declarations.
authorPeter Collingbourne <peter@pcc.me.uk>
Tue, 21 Mar 2017 02:02:41 +0000 (02:02 +0000)
committerPeter Collingbourne <peter@pcc.me.uk>
Tue, 21 Mar 2017 02:02:41 +0000 (02:02 +0000)
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

lib/CodeGen/CodeGenModule.cpp
test/CodeGenCXX/dllexport.cpp

index d6b0d38633c3c50e5bc0148ec03fa86662493625..a6cfa4fa42522eaccf25ddd5fcc10e5e5367aa78 100644 (file)
@@ -1036,7 +1036,6 @@ static void setLinkageAndVisibilityForGV(llvm::GlobalValue *GV,
       GV->setDLLStorageClass(llvm::GlobalValue::DLLImportStorageClass);
     } else if (ND->hasAttr<DLLExportAttr>()) {
       GV->setLinkage(llvm::GlobalValue::ExternalLinkage);
-      GV->setDLLStorageClass(llvm::GlobalValue::DLLExportStorageClass);
     } else if (ND->hasAttr<WeakAttr>() || ND->isWeakImported()) {
       // "extern_weak" is overloaded in LLVM; we probably should have
       // separate linkage types for this.
index 33e524cc9b012e45ec0469faac7d639546ff0b62..bdef2eb06e69a18b0b371308e1859c9e5876d043 100644 (file)
@@ -108,8 +108,8 @@ inline int __declspec(dllexport) inlineStaticLocalsFunc() {
 template<typename T> __declspec(dllexport) int VarTmplDef;
 INSTVAR(VarTmplDef<ExplicitInst_Exported>)
 
-// 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<typename T> __declspec(dllexport) int VarTmplImplicitDef;
 USEVAR(VarTmplImplicitDef<ImplicitInst_Exported>)
 
@@ -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