Skip to content

Commit 824ab89

Browse files
authored
Merge pull request #21539 from compnerd/ODR-ABI
IRGen: give non_abi LinkOnceODR linkage
2 parents d5f530c + 846a64b commit 824ab89

File tree

2 files changed

+5
-2
lines changed

2 files changed

+5
-2
lines changed

lib/IRGen/GenDecl.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1448,13 +1448,16 @@ getIRLinkage(const UniversalLinkageInfo &info, SILLinkage linkage,
14481448
return {llvm::GlobalValue::ExternalLinkage, PublicDefinitionVisibility,
14491449
ExportedStorage};
14501450

1451+
case SILLinkage::PublicNonABI:
1452+
return isDefinition ? RESULT(WeakODR, Hidden, Default)
1453+
: RESULT(External, Hidden, Default);
1454+
14511455
case SILLinkage::Shared:
14521456
case SILLinkage::SharedExternal:
14531457
return isDefinition ? RESULT(LinkOnceODR, Hidden, Default)
14541458
: RESULT(External, Hidden, Default);
14551459

14561460
case SILLinkage::Hidden:
1457-
case SILLinkage::PublicNonABI:
14581461
return RESULT(External, Hidden, Default);
14591462

14601463
case SILLinkage::Private: {

test/IRGen/sil_linkage.sil

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ sil_stage canonical
55
// CHECK: define{{( dllexport)?}}{{( protected)?}} swiftcc void @public_fragile_function_test() {{.*}} {
66
// CHECK: define{{( dllexport)?}}{{( protected)?}} swiftcc void @public_transparent_fragile_function_test() {{.*}} {
77
// CHECK: define{{( dllexport)?}}{{( protected)?}} swiftcc void @public_transparent_function_test() {{.*}} {
8-
// CHECK: define hidden swiftcc void @public_non_abi_function_test() {{.*}} {
8+
// CHECK: define weak_odr hidden swiftcc void @public_non_abi_function_test() {{.*}} {
99
// CHECK: define hidden swiftcc void @hidden_fragile_function_test() {{.*}} {
1010
// CHECK: define linkonce_odr hidden swiftcc void @shared_fragile_function_test() {{.*}} {
1111
// CHECK: define{{( internal)?}} swiftcc void @private_fragile_function_test() {{.*}} {

0 commit comments

Comments
 (0)