Skip to content

Commit 37ecd0e

Browse files
committed
LocalVariableUtils: fix data flow propagation of escapes.
This is only used for lifetime dependence diagnostics. Fix a couple of obvious problems with data flow propagation that crept in during "cleanup" because no unit tests existed.
1 parent 1914573 commit 37ecd0e

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

SwiftCompilerSources/Sources/Optimizer/Utilities/LocalVariableUtils.swift

+6-5
Original file line numberDiff line numberDiff line change
@@ -699,6 +699,7 @@ extension LocalVariableReachableAccess {
699699
case .escape:
700700
break
701701
}
702+
break
702703
}
703704
return currentEffect
704705
}
@@ -873,7 +874,7 @@ extension LocalVariableReachableAccess {
873874
private func findAllEscapesPriorToAccess() {
874875
var visitedBlocks = BasicBlockSet(context)
875876
var escapedBlocks = BasicBlockSet(context)
876-
var blockList = BasicBlockWorklist(context)
877+
var blockList = Stack<BasicBlock>(context)
877878
defer {
878879
visitedBlocks.deinitialize()
879880
escapedBlocks.deinitialize()
@@ -886,19 +887,19 @@ extension LocalVariableReachableAccess {
886887
for successor in from.successors {
887888
if hasEscaped {
888889
if escapedBlocks.insert(successor) {
889-
blockList.pushIfNotVisited(successor)
890+
blockList.push(successor)
890891
}
891892
} else if visitedBlocks.insert(successor) {
892-
blockList.pushIfNotVisited(successor)
893+
blockList.push(successor)
893894
}
894895
}
895896
}
896897
var hasEscaped = propagateEscapeInBlock(after: accessMap.allocation.nextInstruction, hasEscaped: false)
897898
forwardPropagate(accessMap.allocation.parentBlock, hasEscaped)
898899
while let block = blockList.pop() {
899-
hasEscaped = escapedBlocks.insert(block)
900+
hasEscaped = escapedBlocks.contains(block)
900901
hasEscaped = propagateEscapeInBlock(after: block.instructions.first!, hasEscaped: hasEscaped)
901-
forwardPropagate(accessMap.allocation.parentBlock, hasEscaped)
902+
forwardPropagate(block, hasEscaped)
902903
}
903904
}
904905

0 commit comments

Comments
 (0)