Skip to content

Commit bad5b58

Browse files
authored
Merge pull request #24263 from compnerd/weakness
IRGen: do not use `WeakImport` on PE/COFF
2 parents 5936a04 + 68ca11b commit bad5b58

File tree

2 files changed

+9
-4
lines changed

2 files changed

+9
-4
lines changed

lib/IRGen/IRGenModule.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -985,8 +985,12 @@ void IRGenModule::addLinkLibrary(const LinkLibrary &linkLib) {
985985
encodeForceLoadSymbolName(buf, linkLib.getName());
986986
auto ForceImportThunk =
987987
Module.getOrInsertFunction(buf, llvm::FunctionType::get(VoidTy, false));
988-
ApplyIRLinkage(IRLinkage::ExternalWeakImport)
989-
.to(cast<llvm::GlobalValue>(ForceImportThunk));
988+
989+
const IRLinkage IRL =
990+
llvm::Triple(Module.getTargetTriple()).isOSBinFormatCOFF()
991+
? IRLinkage::ExternalImport
992+
: IRLinkage::ExternalWeakImport;
993+
ApplyIRLinkage(IRL).to(cast<llvm::GlobalValue>(ForceImportThunk));
990994

991995
buf += "_$";
992996
appendEncodedName(buf, IRGen.Opts.ModuleName);

test/Serialization/autolinking.swift

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
// RUN: %target-swift-frontend -emit-module -parse-stdlib -o %t -module-name someModule -module-link-name module %S/../Inputs/empty.swift -autolink-force-load
1414
// RUN: %target-swift-frontend -emit-ir -lmagic %s -I %t > %t/force-load.txt
1515
// RUN: %FileCheck %s < %t/force-load.txt
16-
// RUN: %FileCheck -check-prefix=FORCE-LOAD-CLIENT %s < %t/force-load.txt
16+
// RUN: %FileCheck -check-prefix FORCE-LOAD-CLIENT -check-prefix FORCE-LOAD-CLIENT-%target-object-format %s < %t/force-load.txt
1717

1818
// RUN: %target-swift-frontend -emit-ir -parse-stdlib -module-name someModule -module-link-name module %S/../Inputs/empty.swift | %FileCheck --check-prefix=NO-FORCE-LOAD %s
1919
// RUN: %target-swift-frontend -emit-ir -parse-stdlib -module-name someModule -module-link-name module %S/../Inputs/empty.swift -autolink-force-load | %FileCheck --check-prefix=FORCE-LOAD %s
@@ -46,5 +46,6 @@ import someModule
4646
// FORCE-LOAD-CLIENT: @llvm.used = appending global [{{[0-9]+}} x i8*] [
4747
// FORCE-LOAD-CLIENT: i8* bitcast (void ()** @"_swift_FORCE_LOAD_$_module_$_autolinking" to i8*)
4848
// FORCE-LOAD-CLIENT: ], section "llvm.metadata"
49-
// FORCE-LOAD-CLIENT: declare extern_weak {{(dllimport )?}}void @"_swift_FORCE_LOAD_$_module"()
49+
// FORCE-LOAD-CLIENT-MACHO: declare extern_weak {{(dllimport )?}}void @"_swift_FORCE_LOAD_$_module"()
50+
// FORCE-LOAD-CLIENT-COFF: declare extern {{(dllimport )?}}void @"_swift_FORCE_LOAD_$_module"()
5051

0 commit comments

Comments
 (0)