Skip to content

Commit 37ab012

Browse files
committed
Swift SIL: add Builder.createUnreachable()
1 parent a3de800 commit 37ab012

File tree

3 files changed

+15
-0
lines changed

3 files changed

+15
-0
lines changed

SwiftCompilerSources/Sources/SIL/Builder.swift

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,4 +187,12 @@ public struct Builder {
187187
return bi.getAs(BranchInst.self)
188188
}
189189
}
190+
191+
@discardableResult
192+
public func createUnreachable() -> UnreachableInst {
193+
notifyInstructionsChanged()
194+
notifyBranchesChanged()
195+
let ui = SILBuilder_createUnreachable(bridged)
196+
return ui.getAs(UnreachableInst.self)
197+
}
190198
}

include/swift/SIL/SILBridging.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -457,6 +457,7 @@ BridgedInstruction SILBuilder_createUncheckedEnumData(BridgedBuilder builder,
457457
BridgedInstruction SILBuilder_createBranch(
458458
BridgedBuilder builder, BridgedBasicBlock destBlock,
459459
BridgedValueArray arguments);
460+
BridgedInstruction SILBuilder_createUnreachable(BridgedBuilder builder);
460461

461462
SWIFT_END_NULLABILITY_ANNOTATIONS
462463

lib/SIL/Utils/SILBridging.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1188,3 +1188,9 @@ BridgedInstruction SILBuilder_createBranch(
11881188
castToBasicBlock(destBlock),
11891189
getSILValues(arguments, argValues))};
11901190
}
1191+
1192+
BridgedInstruction SILBuilder_createUnreachable(BridgedBuilder b) {
1193+
SILBuilder builder(castToInst(b.insertBefore), castToBasicBlock(b.insertAtEnd),
1194+
b.loc.getScope());
1195+
return {builder.createUnreachable(RegularLocation(b.loc.getLocation()))};
1196+
}

0 commit comments

Comments
 (0)