[PATCH] D29381: [PM/LCG] Remove the lazy RefSCC formation from the LazyCallGraph during iteration.

Davide Italiano via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sun Feb 5 11:57:06 PST 2017


davide added inline comments.


================
Comment at: lib/Analysis/LazyCallGraph.cpp:1690
           // node onto the stack.
           DFSStack.push_back({N, I});
 
----------------
dberlin wrote:
> Just to note, you don't actually have to push the stack here.
> 
> This will push every node onto the stack.
> it's possible to push only the root nodes onto the stack.
> 
> This is more memory efficient, and about 25% faster.
> 
> This is  nuutila's variant, which is easy to implement:
> 
> http://www.cse.tkk.fi/~enu/ps/ipl-scc.ps
> or
> http://www.cse.tkk.fi/~enu/ps/tko-b94-scc.ps
> or 
> the tarjan scc part of https://reviews.llvm.org/D28934
> 
> (For the papers, you want algorithm 1, not 2)
> 
My understanding of Nuutila is that it's faster if the graph is sparse, and when I spoke and proposed this to Chandler he mentioned the graph maybe not-that-sparse (for some definition of). I never found the SCC computation being a bottleneck (even for large programs), but I like Nuutila's variant so I wouldn't be opposed to that (and I think it's worth a try)


https://reviews.llvm.org/D29381





More information about the llvm-commits mailing list