@@ -214,6 +214,7 @@ static BridgedFunction::CopyEffectsFn copyEffectsFunction = nullptr;
214
214
static BridgedFunction::GetEffectInfoFn getEffectInfoFunction = nullptr ;
215
215
static BridgedFunction::GetMemBehaviorFn getMemBehvaiorFunction = nullptr ;
216
216
static BridgedFunction::ArgumentMayReadFn argumentMayReadFunction = nullptr ;
217
+ static BridgedFunction::IsDeinitBarrierFn isDeinitBarrierFunction = nullptr ;
217
218
218
219
SILFunction::SILFunction (
219
220
SILModule &Module, SILLinkage Linkage, StringRef Name,
@@ -1175,7 +1176,8 @@ void BridgedFunction::registerBridging(SwiftMetatype metatype,
1175
1176
CopyEffectsFn copyEffectsFn,
1176
1177
GetEffectInfoFn effectInfoFn,
1177
1178
GetMemBehaviorFn memBehaviorFn,
1178
- ArgumentMayReadFn argumentMayReadFn) {
1179
+ ArgumentMayReadFn argumentMayReadFn,
1180
+ IsDeinitBarrierFn isDeinitBarrierFn) {
1179
1181
functionMetatype = metatype;
1180
1182
initFunction = initFn;
1181
1183
destroyFunction = destroyFn;
@@ -1185,6 +1187,7 @@ void BridgedFunction::registerBridging(SwiftMetatype metatype,
1185
1187
getEffectInfoFunction = effectInfoFn;
1186
1188
getMemBehvaiorFunction = memBehaviorFn;
1187
1189
argumentMayReadFunction = argumentMayReadFn;
1190
+ isDeinitBarrierFunction = isDeinitBarrierFn;
1188
1191
}
1189
1192
1190
1193
std::pair<const char *, int > SILFunction::
@@ -1286,6 +1289,13 @@ bool SILFunction::argumentMayRead(Operand *argOp, SILValue addr) {
1286
1289
return argumentMayReadFunction ({this }, {argOp}, {addr});
1287
1290
}
1288
1291
1292
+ bool SILFunction::isDeinitBarrier () {
1293
+ if (!isDeinitBarrierFunction)
1294
+ return true ;
1295
+
1296
+ return isDeinitBarrierFunction ({this });
1297
+ }
1298
+
1289
1299
SourceFile *SILFunction::getSourceFile () const {
1290
1300
auto declRef = getDeclRef ();
1291
1301
if (!declRef)
0 commit comments