diff options
author | Chris Lattner <sabre@nondot.org> | 2007-08-08 05:51:24 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2007-08-08 05:51:24 +0000 |
commit | c63d4c2e4e43add22b5cc6a41a93cfa83368f15f (patch) | |
tree | b337122901da76c41f465d4f4924b36557a20051 /llvm/lib/Analysis/PostDominators.cpp | |
parent | 0aecf0ebef02af000791d3bbe880bb7b462506db (diff) | |
download | llvm-c63d4c2e4e43add22b5cc6a41a93cfa83368f15f.zip llvm-c63d4c2e4e43add22b5cc6a41a93cfa83368f15f.tar.gz llvm-c63d4c2e4e43add22b5cc6a41a93cfa83368f15f.tar.bz2 |
reimplement dfs number computation to be significantly faster. This speeds up
natural loop canonicalization (which does many cfg xforms) by 4.3x, for
example. This also fixes a bug in postdom dfnumber computation.
llvm-svn: 40920
Diffstat (limited to 'llvm/lib/Analysis/PostDominators.cpp')
-rw-r--r-- | llvm/lib/Analysis/PostDominators.cpp | 12 |
1 files changed, 3 insertions, 9 deletions
diff --git a/llvm/lib/Analysis/PostDominators.cpp b/llvm/lib/Analysis/PostDominators.cpp index 4622441..69e9cbe 100644 --- a/llvm/lib/Analysis/PostDominators.cpp +++ b/llvm/lib/Analysis/PostDominators.cpp @@ -193,15 +193,9 @@ void PostDominatorTree::calculate(Function &F) { Info.clear(); std::vector<BasicBlock*>().swap(Vertex); - int dfsnum = 0; - // Iterate over all nodes in depth first order... - for (unsigned i = 0, e = Roots.size(); i != e; ++i) - for (idf_iterator<BasicBlock*> I = idf_begin(Roots[i]), - E = idf_end(Roots[i]); I != E; ++I) { - if (!getNodeForBlock(*I)->getIDom()) - getNodeForBlock(*I)->assignDFSNumber(dfsnum); - } - DFSInfoValid = true; + // Start out with the DFS numbers being invalid. Let them be computed if + // demanded. + DFSInfoValid = false; } |