Skip to content

Commit 82ad1fa

Browse files
committed
CalleeAnalysis: add getDestructors(destroyInst: Instruction)
1 parent 31143bf commit 82ad1fa

File tree

3 files changed

+14
-0
lines changed

3 files changed

+14
-0
lines changed

SwiftCompilerSources/Sources/Optimizer/Analysis/CalleeAnalysis.swift

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,11 @@ public struct CalleeAnalysis {
1919
public func getCallees(callee: Value) -> FunctionArray {
2020
return FunctionArray(bridged: CalleeAnalysis_getCallees(bridged, callee.bridged))
2121
}
22+
23+
public func getDestructors(destroyInst: Instruction) -> FunctionArray {
24+
return FunctionArray(bridged:
25+
CalleeAnalysis_getInstCallees(bridged, destroyInst.bridged))
26+
}
2227
}
2328

2429
public struct FunctionArray : RandomAccessCollection, FormattedLikeArray {

include/swift/SILOptimizer/OptimizerBridging.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,8 @@ BridgedCalleeAnalysis PassContext_getCalleeAnalysis(BridgedPassContext context);
9090

9191
BridgedCalleeList CalleeAnalysis_getCallees(BridgedCalleeAnalysis calleeAnalysis,
9292
BridgedValue callee);
93+
BridgedCalleeList CalleeAnalysis_getInstCallees(BridgedCalleeAnalysis calleeAnalysis,
94+
BridgedInstruction inst);
9395
SwiftInt BridgedFunctionArray_size(BridgedCalleeList callees);
9496
BridgedFunction BridgedFunctionArray_get(BridgedCalleeList callees,
9597
SwiftInt index);

lib/SILOptimizer/Analysis/BasicCalleeAnalysis.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -332,6 +332,13 @@ BridgedCalleeList CalleeAnalysis_getCallees(BridgedCalleeAnalysis calleeAnalysis
332332
return {cl.getOpaquePtr(), cl.getOpaqueKind(), cl.isIncomplete()};
333333
}
334334

335+
BridgedCalleeList CalleeAnalysis_getInstCallees(BridgedCalleeAnalysis calleeAnalysis,
336+
BridgedInstruction inst) {
337+
BasicCalleeAnalysis *bca = static_cast<BasicCalleeAnalysis *>(calleeAnalysis.bca);
338+
CalleeList cl = bca->getCalleeList(castToInst(inst));
339+
return {cl.getOpaquePtr(), cl.getOpaqueKind(), cl.isIncomplete()};
340+
}
341+
335342
SwiftInt BridgedFunctionArray_size(BridgedCalleeList callees) {
336343
CalleeList cl = CalleeList::fromOpaque(callees.opaquePtr, callees.kind,
337344
callees.incomplete);

0 commit comments

Comments
 (0)