Skip to content

Commit fa0be3c

Browse files
committed
SwiftCompilerSources: bridge some SIL APIs
* `TryApplyInst.specializationInfo` * `BasicBlock.addFunctionArgument` * `Function.appendNewBlock`
1 parent b3e5f07 commit fa0be3c

File tree

6 files changed

+27
-0
lines changed

6 files changed

+27
-0
lines changed

SwiftCompilerSources/Sources/Optimizer/PassManager/Context.swift

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -458,6 +458,11 @@ extension BasicBlock {
458458
return bridged.addBlockArgument(type.bridged, ownership._bridged).argument
459459
}
460460

461+
func addFunctionArgument(type: Type, _ context: some MutatingContext) -> FunctionArgument {
462+
context.notifyInstructionsChanged()
463+
return bridged.addFunctionArgument(type.bridged).argument as! FunctionArgument
464+
}
465+
461466
func eraseArgument(at index: Int, _ context: some MutatingContext) {
462467
context.notifyInstructionsChanged()
463468
bridged.eraseArgument(index)
@@ -602,4 +607,9 @@ extension Function {
602607
func fixStackNesting(_ context: FunctionPassContext) {
603608
context._bridged.fixStackNesting(bridged)
604609
}
610+
611+
func appendNewBlock(_ context: FunctionPassContext) -> BasicBlock {
612+
context.notifyBranchesChanged()
613+
return context._bridged.appendBlock(bridged).block
614+
}
605615
}

SwiftCompilerSources/Sources/SIL/Instruction.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1251,6 +1251,8 @@ final public class TryApplyInst : TermInst, FullApplySite {
12511251
public var errorBlock: BasicBlock { successors[1] }
12521252

12531253
public var singleDirectResult: Value? { normalBlock.arguments[0] }
1254+
1255+
public var specializationInfo: ApplyInst.SpecializationInfo { bridged.TryApplyInst_getSpecializationInfo() }
12541256
}
12551257

12561258
final public class BranchInst : TermInst {

include/swift/SIL/SILBridging.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -834,6 +834,7 @@ struct BridgedInstruction {
834834
BRIDGED_INLINE bool ApplyInst_getNonThrowing() const;
835835
BRIDGED_INLINE bool ApplyInst_getNonAsync() const;
836836
SWIFT_IMPORT_UNSAFE BRIDGED_INLINE BridgedGenericSpecializationInformation ApplyInst_getSpecializationInfo() const;
837+
SWIFT_IMPORT_UNSAFE BRIDGED_INLINE BridgedGenericSpecializationInformation TryApplyInst_getSpecializationInfo() const;
837838
BRIDGED_INLINE SwiftInt ObjectInst_getNumBaseElements() const;
838839
BRIDGED_INLINE SwiftInt PartialApply_getCalleeArgIndexOfFirstAppliedArg() const;
839840
BRIDGED_INLINE bool PartialApplyInst_isOnStack() const;
@@ -968,6 +969,7 @@ struct BridgedBasicBlock {
968969
BRIDGED_INLINE SwiftInt getNumArguments() const;
969970
SWIFT_IMPORT_UNSAFE BRIDGED_INLINE BridgedArgument getArgument(SwiftInt index) const;
970971
SWIFT_IMPORT_UNSAFE BRIDGED_INLINE BridgedArgument addBlockArgument(BridgedType type, BridgedValue::Ownership ownership) const;
972+
SWIFT_IMPORT_UNSAFE BRIDGED_INLINE BridgedArgument addFunctionArgument(BridgedType type) const;
971973
BRIDGED_INLINE void eraseArgument(SwiftInt index) const;
972974
BRIDGED_INLINE void moveAllInstructionsToBegin(BridgedBasicBlock dest) const;
973975
BRIDGED_INLINE void moveAllInstructionsToEnd(BridgedBasicBlock dest) const;

include/swift/SIL/SILBridgingImpl.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1017,6 +1017,10 @@ BridgedGenericSpecializationInformation BridgedInstruction::ApplyInst_getSpecial
10171017
return {getAs<swift::ApplyInst>()->getSpecializationInfo()};
10181018
}
10191019

1020+
BridgedGenericSpecializationInformation BridgedInstruction::TryApplyInst_getSpecializationInfo() const {
1021+
return {getAs<swift::TryApplyInst>()->getSpecializationInfo()};
1022+
}
1023+
10201024
SwiftInt BridgedInstruction::ObjectInst_getNumBaseElements() const {
10211025
return getAs<swift::ObjectInst>()->getNumBaseElements();
10221026
}
@@ -1293,6 +1297,10 @@ BridgedArgument BridgedBasicBlock::addBlockArgument(BridgedType type, BridgedVal
12931297
type.unbridged(), BridgedValue::castToOwnership(ownership))};
12941298
}
12951299

1300+
BridgedArgument BridgedBasicBlock::addFunctionArgument(BridgedType type) const {
1301+
return {unbridged()->createFunctionArgument(type.unbridged())};
1302+
}
1303+
12961304
void BridgedBasicBlock::eraseArgument(SwiftInt index) const {
12971305
unbridged()->eraseArgument(index);
12981306
}

include/swift/SILOptimizer/OptimizerBridging.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,7 @@ struct BridgedPassContext {
201201
SWIFT_IMPORT_UNSAFE BRIDGED_INLINE BridgedBasicBlock splitBlockBefore(BridgedInstruction bridgedInst) const;
202202
SWIFT_IMPORT_UNSAFE BRIDGED_INLINE BridgedBasicBlock splitBlockAfter(BridgedInstruction bridgedInst) const;
203203
SWIFT_IMPORT_UNSAFE BRIDGED_INLINE BridgedBasicBlock createBlockAfter(BridgedBasicBlock bridgedBlock) const;
204+
SWIFT_IMPORT_UNSAFE BRIDGED_INLINE BridgedBasicBlock appendBlock(BridgedFunction bridgedFunction) const;
204205
BRIDGED_INLINE void eraseInstruction(BridgedInstruction inst) const;
205206
BRIDGED_INLINE void eraseBlock(BridgedBasicBlock block) const;
206207
static BRIDGED_INLINE void moveInstructionBefore(BridgedInstruction inst, BridgedInstruction beforeInst);

include/swift/SILOptimizer/OptimizerBridgingImpl.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,10 @@ BridgedBasicBlock BridgedPassContext::createBlockAfter(BridgedBasicBlock bridged
212212
return {block->getParent()->createBasicBlockAfter(block)};
213213
}
214214

215+
BridgedBasicBlock BridgedPassContext::appendBlock(BridgedFunction bridgedFunction) const {
216+
return {bridgedFunction.getFunction()->createBasicBlock()};
217+
}
218+
215219
void BridgedPassContext::eraseInstruction(BridgedInstruction inst) const {
216220
invocation->eraseInstruction(inst.unbridged());
217221
}

0 commit comments

Comments
 (0)