mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
Merge remote-tracking branch 'origin/master' into master-next
This commit is contained in:
@@ -960,9 +960,12 @@ void IRGenModule::addLinkLibrary(const LinkLibrary &linkLib) {
|
||||
encodeForceLoadSymbolName(buf, linkLib.getName());
|
||||
auto ForceImportThunk =
|
||||
Module.getOrInsertFunction(buf, llvm::FunctionType::get(VoidTy, false));
|
||||
if (useDllStorage())
|
||||
cast<llvm::GlobalValue>(ForceImportThunk)
|
||||
->setDLLStorageClass(llvm::GlobalValue::DLLImportStorageClass);
|
||||
ApplyIRLinkage({llvm::GlobalValue::ExternalLinkage,
|
||||
llvm::GlobalValue::DefaultVisibility,
|
||||
useDllStorage()
|
||||
? llvm::GlobalValue::DLLImportStorageClass
|
||||
: llvm::GlobalValue::DefaultStorageClass})
|
||||
.to(cast<llvm::GlobalValue>(ForceImportThunk));
|
||||
|
||||
buf += "_$";
|
||||
appendEncodedName(buf, IRGen.Opts.ModuleName);
|
||||
@@ -970,9 +973,12 @@ void IRGenModule::addLinkLibrary(const LinkLibrary &linkLib) {
|
||||
if (!Module.getGlobalVariable(buf.str())) {
|
||||
auto ref = new llvm::GlobalVariable(Module, ForceImportThunk->getType(),
|
||||
/*isConstant=*/true,
|
||||
llvm::GlobalValue::WeakAnyLinkage,
|
||||
llvm::GlobalValue::WeakODRLinkage,
|
||||
ForceImportThunk, buf.str());
|
||||
ref->setVisibility(llvm::GlobalValue::HiddenVisibility);
|
||||
ApplyIRLinkage({llvm::GlobalValue::WeakODRLinkage,
|
||||
llvm::GlobalValue::HiddenVisibility,
|
||||
llvm::GlobalValue::DefaultStorageClass})
|
||||
.to(ref);
|
||||
auto casted = llvm::ConstantExpr::getBitCast(ref, Int8PtrTy);
|
||||
LLVMUsed.push_back(casted);
|
||||
}
|
||||
@@ -1083,9 +1089,12 @@ void IRGenModule::emitAutolinkInfo() {
|
||||
llvm::Function::Create(llvm::FunctionType::get(VoidTy, false),
|
||||
llvm::GlobalValue::ExternalLinkage, buf,
|
||||
&Module);
|
||||
if (useDllStorage())
|
||||
ForceImportThunk
|
||||
->setDLLStorageClass(llvm::GlobalValue::DLLExportStorageClass);
|
||||
ApplyIRLinkage({llvm::GlobalValue::ExternalLinkage,
|
||||
llvm::GlobalValue::DefaultVisibility,
|
||||
useDllStorage()
|
||||
? llvm::GlobalValue::DLLExportStorageClass
|
||||
: llvm::GlobalValue::DefaultStorageClass})
|
||||
.to(ForceImportThunk);
|
||||
|
||||
auto BB = llvm::BasicBlock::Create(getLLVMContext(), "", ForceImportThunk);
|
||||
llvm::IRBuilder<> IRB(BB);
|
||||
|
||||
Reference in New Issue
Block a user