Set dso_local on __ImageBase.
authorRafael Espindola <rafael.espindola@gmail.com>
Thu, 22 Mar 2018 23:02:19 +0000 (23:02 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Thu, 22 Mar 2018 23:02:19 +0000 (23:02 +0000)
llvm-svn: 328266

clang/lib/CodeGen/MicrosoftCXXABI.cpp
clang/test/CodeGenCXX/dllexport.cpp

index d7fac79c86e8ea4bac148ffc8f39b0d7bb5ee2ce..6ee423bb82e8fbc2155e3396dfc7a13256b6c354 100644 (file)
@@ -523,10 +523,12 @@ public:
     if (llvm::GlobalVariable *GV = CGM.getModule().getNamedGlobal(Name))
       return GV;
 
-    return new llvm::GlobalVariable(CGM.getModule(), CGM.Int8Ty,
-                                    /*isConstant=*/true,
-                                    llvm::GlobalValue::ExternalLinkage,
-                                    /*Initializer=*/nullptr, Name);
+    auto *GV = new llvm::GlobalVariable(CGM.getModule(), CGM.Int8Ty,
+                                        /*isConstant=*/true,
+                                        llvm::GlobalValue::ExternalLinkage,
+                                        /*Initializer=*/nullptr, Name);
+    CGM.setDSOLocal(GV);
+    return GV;
   }
 
   llvm::Constant *getImageRelativeConstant(llvm::Constant *PtrVal) {
index 8820ca8909cbf4ed6c3b7b6b417ce212fdc9849b..d7a7be8170fd5f1f361e86298d11c739127d2678 100644 (file)
@@ -41,6 +41,8 @@ struct External { int v; };
 // GNU-NOT: @ExternGlobalDecl
 __declspec(dllexport) extern int ExternGlobalDecl;
 
+// M64-DAG: @__ImageBase = external dso_local constant i8
+
 // dllexport implies a definition.
 // MSC-DAG: @"?GlobalDef@@3HA" = dso_local dllexport global i32 0, align 4
 // GNU-DAG: @GlobalDef            = dso_local dllexport global i32 0, align 4