From e9f7200d87bfcb8b5d710ca001b6e26940bdffed Mon Sep 17 00:00:00 2001 From: Chandler Carruth Date: Sat, 5 Aug 2017 03:37:39 +0000 Subject: [PATCH] [LCG] Rather than walking the directed graph structure to update graph pointers in node objects, just walk the map from function to node. It doesn't have stable ordering, but works just as well and is much simpler. We don't need ordering when just updating internal pointers. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@310163 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Analysis/LazyCallGraph.cpp | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/lib/Analysis/LazyCallGraph.cpp b/lib/Analysis/LazyCallGraph.cpp index 690ca7d5122..b64129b33dc 100644 --- a/lib/Analysis/LazyCallGraph.cpp +++ b/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 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; -- 2.50.1