Skip to content

Commit cf5fee0

Browse files
authored
Adjust emitted IR on !llvm.used.conditional to match LLVM expectations (#39715)
1 parent ed6f701 commit cf5fee0

File tree

2 files changed

+17
-5
lines changed

2 files changed

+17
-5
lines changed

lib/IRGen/GenDecl.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3720,7 +3720,10 @@ static void appendLLVMUsedConditionalEntry(IRGenModule &IGM,
37203720
llvm::Type::getInt32Ty(IGM.Module.getContext()), 0)),
37213721
// (3) the "edge" that holds the target alive, if it's missing the target
37223722
// is allowed to be removed
3723-
llvm::ConstantAsMetadata::get(dependsOn),
3723+
llvm::MDNode::get(IGM.Module.getContext(),
3724+
{
3725+
llvm::ConstantAsMetadata::get(dependsOn),
3726+
}),
37243727
};
37253728
auto *usedConditional =
37263729
IGM.Module.getOrInsertNamedMetadata("llvm.used.conditional");

test/IRGen/conditional-dead-strip-ir.swift

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,18 @@ public enum Enum {
2626
// CHECK-SAME: ], section "llvm.metadata"
2727

2828
// CHECK: !llvm.used.conditional = !{[[C1:!.*]], [[C2:!.*]], [[C3:!.*]], [[C4:!.*]], [[C5:!.*]]}
29-
// CHECK: [[C1]] = !{{{.*}} @"$s4main11TheProtocolHr", i32 0, {{.*}} @"$s4main11TheProtocolMp"}
29+
30+
// CHECK: [[C1]] = !{{{.*}} @"$s4main11TheProtocolHr", i32 0, [[C1A:!.*]]}
31+
// CHECK: [[C1A]] = !{{{.*}} @"$s4main11TheProtocolMp"}
32+
3033
// CHECK: [[C2]] = !{{{.*}} @"$s4main5ClassCAA11TheProtocolAAHc", i32 1, [[C2A:!.*]]}
3134
// CHECK: [[C2A]] = !{{{.*}} @"$s4main11TheProtocolMp", {{.*}} @"$s4main5ClassCMn"}
32-
// CHECK: [[C3]] = !{{{.*}} @"$s4main5ClassCHn", i32 0, {{.*}} @"$s4main5ClassCMn"}
33-
// CHECK: [[C4]] = !{{{.*}} @"$s4main6StructVHn", i32 0, {{.*}} @"$s4main6StructVMn"}
34-
// CHECK: [[C5]] = !{{{.*}} @"$s4main4EnumOHn", i32 0, {{.*}} @"$s4main4EnumOMn"}
35+
36+
// CHECK: [[C3]] = !{{{.*}} @"$s4main5ClassCHn", i32 0, [[C3A:!.*]]}
37+
// CHECK: [[C3A]] = !{{{.*}} @"$s4main5ClassCMn"}
38+
39+
// CHECK: [[C4]] = !{{{.*}} @"$s4main6StructVHn", i32 0, [[C4A:!.*]]}
40+
// CHECK: [[C4A]] = !{{{.*}} @"$s4main6StructVMn"}
41+
42+
// CHECK: [[C5]] = !{{{.*}} @"$s4main4EnumOHn", i32 0, [[C5A:!.*]]}
43+
// CHECK: [[C5A]] = !{{{.*}} @"$s4main4EnumOMn"}

0 commit comments

Comments
 (0)