@@ -960,19 +960,25 @@ void IRGenModule::addLinkLibrary(const LinkLibrary &linkLib) {
960
960
encodeForceLoadSymbolName (buf, linkLib.getName ());
961
961
auto ForceImportThunk =
962
962
Module.getOrInsertFunction (buf, llvm::FunctionType::get (VoidTy, false ));
963
- if (useDllStorage ())
964
- cast<llvm::GlobalValue>(ForceImportThunk)
965
- ->setDLLStorageClass (llvm::GlobalValue::DLLImportStorageClass);
963
+ ApplyIRLinkage ({llvm::GlobalValue::ExternalLinkage,
964
+ llvm::GlobalValue::DefaultVisibility,
965
+ useDllStorage ()
966
+ ? llvm::GlobalValue::DLLImportStorageClass
967
+ : llvm::GlobalValue::DefaultStorageClass})
968
+ .to (cast<llvm::GlobalValue>(ForceImportThunk));
966
969
967
970
buf += " _$" ;
968
971
appendEncodedName (buf, IRGen.Opts .ModuleName );
969
972
970
973
if (!Module.getGlobalVariable (buf.str ())) {
971
974
auto ref = new llvm::GlobalVariable (Module, ForceImportThunk->getType (),
972
975
/* isConstant=*/ true ,
973
- llvm::GlobalValue::WeakAnyLinkage ,
976
+ llvm::GlobalValue::WeakODRLinkage ,
974
977
ForceImportThunk, buf.str ());
975
- ref->setVisibility (llvm::GlobalValue::HiddenVisibility);
978
+ ApplyIRLinkage ({llvm::GlobalValue::WeakODRLinkage,
979
+ llvm::GlobalValue::HiddenVisibility,
980
+ llvm::GlobalValue::DefaultStorageClass})
981
+ .to (ref);
976
982
auto casted = llvm::ConstantExpr::getBitCast (ref, Int8PtrTy);
977
983
LLVMUsed.push_back (casted);
978
984
}
@@ -1083,9 +1089,12 @@ void IRGenModule::emitAutolinkInfo() {
1083
1089
llvm::Function::Create (llvm::FunctionType::get (VoidTy, false ),
1084
1090
llvm::GlobalValue::ExternalLinkage, buf,
1085
1091
&Module);
1086
- if (useDllStorage ())
1087
- ForceImportThunk
1088
- ->setDLLStorageClass (llvm::GlobalValue::DLLExportStorageClass);
1092
+ ApplyIRLinkage ({llvm::GlobalValue::ExternalLinkage,
1093
+ llvm::GlobalValue::DefaultVisibility,
1094
+ useDllStorage ()
1095
+ ? llvm::GlobalValue::DLLExportStorageClass
1096
+ : llvm::GlobalValue::DefaultStorageClass})
1097
+ .to (ForceImportThunk);
1089
1098
1090
1099
auto BB = llvm::BasicBlock::Create (getLLVMContext (), " " , ForceImportThunk);
1091
1100
llvm::IRBuilder<> IRB (BB);
0 commit comments