Merge remote-tracking branch 'origin/master' into master-next

This commit is contained in:
swift-ci
2019-01-02 21:50:10 -08:00
2 changed files with 18 additions and 9 deletions

View File

@@ -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);