diff options
Diffstat (limited to 'llvm/lib/Analysis/LazyCallGraph.cpp')
-rw-r--r-- | llvm/lib/Analysis/LazyCallGraph.cpp | 18 |
1 files changed, 4 insertions, 14 deletions
diff --git a/llvm/lib/Analysis/LazyCallGraph.cpp b/llvm/lib/Analysis/LazyCallGraph.cpp index 690ca7d5122..b64129b33dc 100644 --- a/llvm/lib/Analysis/LazyCallGraph.cpp +++ b/llvm/lib/Analysis/LazyCallGraph.cpp @@ -1684,20 +1684,10 @@ LazyCallGraph::Node &LazyCallGraph::insertInto(Function &F, Node *&MappedN) { } void LazyCallGraph::updateGraphPtrs() { - // Process all nodes updating the graph pointers. - { - SmallVector<Node *, 16> Worklist; - for (Edge &E : EntryEdges) - Worklist.push_back(&E.getNode()); - - while (!Worklist.empty()) { - Node &N = *Worklist.pop_back_val(); - N.G = this; - if (N) - for (Edge &E : *N) - Worklist.push_back(&E.getNode()); - } - } + // Walk the node map to update their graph pointers. While this iterates in + // an unstable order, the order has no effect so it remains correct. + for (auto &FunctionNodePair : NodeMap) + FunctionNodePair.second->G = this; for (auto *RC : PostOrderRefSCCs) RC->G = this; |