File tree Expand file tree Collapse file tree 1 file changed +6
-0
lines changed
lib/SILOptimizer/Transforms Expand file tree Collapse file tree 1 file changed +6
-0
lines changed Original file line number Diff line number Diff line change @@ -945,6 +945,8 @@ void DestroyAddrHoisting::hoistDestroys(
945
945
// blocks and pushing begin_access as we see them and then popping them off
946
946
// the end will result in hoisting inner begin_access' destroy_addrs first.
947
947
for (auto *bai : llvm::reverse (bais)) {
948
+ if (!continueWithNextSubpassRun (bai))
949
+ return ;
948
950
// [exclusive_modify_scope_hoisting] Hoisting within modify access scopes
949
951
// doesn't respect deinit barriers because
950
952
//
@@ -961,6 +963,8 @@ void DestroyAddrHoisting::hoistDestroys(
961
963
}
962
964
// Alloc stacks always enclose their accesses.
963
965
for (auto *asi : asis) {
966
+ if (!continueWithNextSubpassRun (asi))
967
+ return ;
964
968
changed |= ::hoistDestroys (asi,
965
969
/* ignoreDeinitBarriers=*/ !asi->isLexical (),
966
970
remainingDestroyAddrs, deleter, calleeAnalysis);
@@ -969,6 +973,8 @@ void DestroyAddrHoisting::hoistDestroys(
969
973
for (auto *uncastArg : getFunction ()->getArguments ()) {
970
974
auto *arg = cast<SILFunctionArgument>(uncastArg);
971
975
if (arg->getType ().isAddress ()) {
976
+ if (!continueWithNextSubpassRun (arg))
977
+ return ;
972
978
auto convention = arg->getArgumentConvention ();
973
979
// This is equivalent to writing
974
980
//
You can’t perform that action at this time.
0 commit comments