Skip to content

Commit bebb76b

Browse files
committed
[EscapeAnalysis] Fix a bug in graph merging.
1 parent 118ee8c commit bebb76b

File tree

1 file changed

+4
-1
lines changed

1 file changed

+4
-1
lines changed

lib/SILAnalysis/EscapeAnalysis.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -426,8 +426,11 @@ bool EscapeAnalysis::ConnectionGraph::mergeFrom(ConnectionGraph *SourceGraph,
426426
CGNode *DestReachable = Mapping.get(SourceReachable);
427427
// Create the edge in this graph. Note: this may trigger merging of
428428
// content nodes.
429-
if (DestReachable)
429+
if (DestReachable) {
430430
Changed |= defer(DestFrom, DestReachable);
431+
// In case DestFrom is merged during adding the defer-edge.
432+
DestFrom = DestFrom->getMergeTarget();
433+
}
431434

432435
for (auto *Defered : SourceReachable->defersTo) {
433436
if (!Defered->isInWorkList) {

0 commit comments

Comments
 (0)