Skip to content

Commit 9326da0

Browse files
committed
allow deleting dead non-escaping closures in OSSA
1 parent 7709a9a commit 9326da0

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed

lib/SILOptimizer/Utils/InstOptUtils.cpp

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1024,11 +1024,14 @@ bool swift::tryDeleteDeadClosure(SingleValueInstruction *closure,
10241024
if (pa && pa->isOnStack()) {
10251025
SmallVector<SILInstruction *, 8> deleteInsts;
10261026
for (auto *use : pa->getUses()) {
1027-
if (isa<DeallocStackInst>(use->getUser())
1028-
|| isa<DebugValueInst>(use->getUser()))
1029-
deleteInsts.push_back(use->getUser());
1030-
else if (!deadMarkDependenceUser(use->getUser(), deleteInsts))
1027+
SILInstruction *user = use->getUser();
1028+
if (isa<DeallocStackInst>(user)
1029+
|| isa<DebugValueInst>(user)
1030+
|| isa<DestroyValueInst>(user)) {
1031+
deleteInsts.push_back(user);
1032+
} else if (!deadMarkDependenceUser(user, deleteInsts)) {
10311033
return false;
1034+
}
10321035
}
10331036
for (auto *inst : reverse(deleteInsts))
10341037
callbacks.deleteInst(inst);

0 commit comments

Comments
 (0)