mirror of
https://github.com/RPCSX/llvm.git
synced 2025-01-10 22:46:20 +00:00
[PM] Rework a loop in the CGSCC update logic to be more conservative and
clear. The current RefSCC can occur in exactly one position so we should just enforce that and leverage the property rather than checking for it anywhere. This addresses review comments made on another patch. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@290162 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
54cffa1811
commit
1c4b812941
@ -329,13 +329,17 @@ LazyCallGraph::SCC &llvm::updateCGAndAnalysisManagerForFunctionPass(
|
||||
assert(G.lookupSCC(N) == C && "Changed the SCC when splitting RefSCCs!");
|
||||
RC = &C->getOuterRefSCC();
|
||||
assert(G.lookupRefSCC(N) == RC && "Failed to update current RefSCC!");
|
||||
for (RefSCC *NewRC : reverse(NewRefSCCs))
|
||||
if (NewRC != RC) {
|
||||
UR.RCWorklist.insert(NewRC);
|
||||
if (DebugLogging)
|
||||
dbgs() << "Enqueuing a new RefSCC in the update worklist: "
|
||||
<< *NewRC << "\n";
|
||||
}
|
||||
assert(NewRefSCCs.front() == RC &&
|
||||
"New current RefSCC not first in the returned list!");
|
||||
for (RefSCC *NewRC : reverse(
|
||||
make_range(std::next(NewRefSCCs.begin()), NewRefSCCs.end()))) {
|
||||
assert(NewRC != RC && "Should not encounter the current RefSCC further "
|
||||
"in the postorder list of new RefSCCs.");
|
||||
UR.RCWorklist.insert(NewRC);
|
||||
if (DebugLogging)
|
||||
dbgs() << "Enqueuing a new RefSCC in the update worklist: " << *NewRC
|
||||
<< "\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user