diff options
| author | Tobias Grosser <grosser@fim.uni-passau.de> | 2010-01-07 23:50:25 +0000 |
|---|---|---|
| committer | Tobias Grosser <grosser@fim.uni-passau.de> | 2010-01-07 23:50:25 +0000 |
| commit | bbe375e2fe3a6c72d4e7c2b977772a605ae8da39 (patch) | |
| tree | 6f8be86cbd91ec53c70d0a960f9fc0f4537a02a6 /llvm | |
| parent | 35e234bf24615180444c1f4c33d76f4943a001a2 (diff) | |
| download | bcm5719-llvm-bbe375e2fe3a6c72d4e7c2b977772a605ae8da39.tar.gz bcm5719-llvm-bbe375e2fe3a6c72d4e7c2b977772a605ae8da39.zip | |
Remove workaround in PostDominators
Remove a FIXME and unify code that was necessary to work around broken
updateDFSNumbers(). Before updateDFSNumbers() did not work correctly for post
dominators.
llvm-svn: 92968
Diffstat (limited to 'llvm')
| -rw-r--r-- | llvm/include/llvm/Analysis/DominatorInternals.h | 11 | ||||
| -rw-r--r-- | llvm/include/llvm/Analysis/Dominators.h | 14 |
2 files changed, 6 insertions, 19 deletions
diff --git a/llvm/include/llvm/Analysis/DominatorInternals.h b/llvm/include/llvm/Analysis/DominatorInternals.h index cca0d502b69..5ecb3481445 100644 --- a/llvm/include/llvm/Analysis/DominatorInternals.h +++ b/llvm/include/llvm/Analysis/DominatorInternals.h @@ -347,15 +347,8 @@ void Calculate(DominatorTreeBase<typename GraphTraits<NodeT>::NodeType>& DT, DT.IDoms.clear(); DT.Info.clear(); std::vector<typename GraphT::NodeType*>().swap(DT.Vertex); - - // FIXME: This does not work on PostDomTrees. It seems likely that this is - // due to an error in the algorithm for post-dominators. This really should - // be investigated and fixed at some point. - // DT.updateDFSNumbers(); - - // Start out with the DFS numbers being invalid. Let them be computed if - // demanded. - DT.DFSInfoValid = false; + + DT.updateDFSNumbers(); } } diff --git a/llvm/include/llvm/Analysis/Dominators.h b/llvm/include/llvm/Analysis/Dominators.h index 7ac474aff34..b70b23c01f4 100644 --- a/llvm/include/llvm/Analysis/Dominators.h +++ b/llvm/include/llvm/Analysis/Dominators.h @@ -652,21 +652,17 @@ public: /// recalculate - compute a dominator tree for the given function template<class FT> void recalculate(FT& F) { - if (!this->IsPostDominators) { - reset(); + reset(); + this->Vertex.push_back(0); - // Initialize roots + if (!this->IsPostDominators) { + // Initialize root this->Roots.push_back(&F.front()); this->IDoms[&F.front()] = 0; this->DomTreeNodes[&F.front()] = 0; - this->Vertex.push_back(0); Calculate<FT, NodeT*>(*this, F); - - updateDFSNumbers(); } else { - reset(); // Reset from the last time we were run... - // Initialize the roots list for (typename FT::iterator I = F.begin(), E = F.end(); I != E; ++I) { if (std::distance(GraphTraits<FT*>::child_begin(I), @@ -678,8 +674,6 @@ public: this->DomTreeNodes[I] = 0; } - this->Vertex.push_back(0); - Calculate<FT, Inverse<NodeT*> >(*this, F); } } |

