mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 11:13:28 +01:00
[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. llvm-svn: 310163
This commit is contained in:
parent
9533c6982e
commit
3dc2cc77b2
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user