@@ -214,6 +214,7 @@ static BridgedFunction::CopyEffectsFn copyEffectsFunction = nullptr;
214214static BridgedFunction::GetEffectInfoFn getEffectInfoFunction = nullptr ;
215215static BridgedFunction::GetMemBehaviorFn getMemBehvaiorFunction = nullptr ;
216216static BridgedFunction::ArgumentMayReadFn argumentMayReadFunction = nullptr ;
217+ static BridgedFunction::IsDeinitBarrierFn isDeinitBarrierFunction = nullptr ;
217218
218219SILFunction::SILFunction (
219220 SILModule &Module, SILLinkage Linkage, StringRef Name,
@@ -1175,7 +1176,8 @@ void BridgedFunction::registerBridging(SwiftMetatype metatype,
11751176 CopyEffectsFn copyEffectsFn,
11761177 GetEffectInfoFn effectInfoFn,
11771178 GetMemBehaviorFn memBehaviorFn,
1178- ArgumentMayReadFn argumentMayReadFn) {
1179+ ArgumentMayReadFn argumentMayReadFn,
1180+ IsDeinitBarrierFn isDeinitBarrierFn) {
11791181 functionMetatype = metatype;
11801182 initFunction = initFn;
11811183 destroyFunction = destroyFn;
@@ -1185,6 +1187,7 @@ void BridgedFunction::registerBridging(SwiftMetatype metatype,
11851187 getEffectInfoFunction = effectInfoFn;
11861188 getMemBehvaiorFunction = memBehaviorFn;
11871189 argumentMayReadFunction = argumentMayReadFn;
1190+ isDeinitBarrierFunction = isDeinitBarrierFn;
11881191}
11891192
11901193std::pair<const char *, int > SILFunction::
@@ -1286,6 +1289,13 @@ bool SILFunction::argumentMayRead(Operand *argOp, SILValue addr) {
12861289 return argumentMayReadFunction ({this }, {argOp}, {addr});
12871290}
12881291
1292+ bool SILFunction::isDeinitBarrier () {
1293+ if (!isDeinitBarrierFunction)
1294+ return true ;
1295+
1296+ return isDeinitBarrierFunction ({this });
1297+ }
1298+
12891299SourceFile *SILFunction::getSourceFile () const {
12901300 auto declRef = getDeclRef ();
12911301 if (!declRef)
0 commit comments