diff options
author | Devang Patel <dpatel@apple.com> | 2006-09-14 21:43:24 +0000 |
---|---|---|
committer | Devang Patel <dpatel@apple.com> | 2006-09-14 21:43:24 +0000 |
commit | 697e5905805634b343be39391c403c38d2e64999 (patch) | |
tree | 45595938e66781b60984b6d438b27ca116e62047 | |
parent | 1ec72738ac685543a02068559877ec713b36a463 (diff) |
Undo previous check-in.
Reintroduce recursive assignDFSNumber().
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30380 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/llvm/Analysis/ET-Forest.h | 11 | ||||
-rw-r--r-- | lib/VMCore/Dominators.cpp | 33 |
2 files changed, 10 insertions, 34 deletions
diff --git a/include/llvm/Analysis/ET-Forest.h b/include/llvm/Analysis/ET-Forest.h index ef2b2155c7..b05776a9e0 100644 --- a/include/llvm/Analysis/ET-Forest.h +++ b/include/llvm/Analysis/ET-Forest.h @@ -250,7 +250,16 @@ public: return this->Below(other); } - void assignDFSNumber(int &); + void assignDFSNumber(int &num) { + DFSNumIn = num++; + + if (Son) { + Son->assignDFSNumber(num); + for (ETNode *son = Son->Right; son != Son; son = son->Right) + son->assignDFSNumber(num); + } + DFSNumOut = num++; + } bool hasFather() const { return Father != NULL; diff --git a/lib/VMCore/Dominators.cpp b/lib/VMCore/Dominators.cpp index fd193b8d7a..9f7e5d9365 100644 --- a/lib/VMCore/Dominators.cpp +++ b/lib/VMCore/Dominators.cpp @@ -890,39 +890,6 @@ void ETForest::calculate(const ImmediateDominators &ID) { updateDFSNumbers (); } -// Walk ETNode and its children using DFS algorithm and assign -// DFSNumIn and DFSNumOut numbers for each node. -void ETNode::assignDFSNumber(int &num) { - - std::vector<ETNode *> DFSInStack; - std::set<ETNode *> visited; - - DFSInStack.push_back(this); - - visited.insert(this); - - while(!DFSInStack.empty()) { - ETNode *Parent = DFSInStack.back(); - DFSInStack.pop_back(); - Parent->DFSNumIn = num++; - Parent->DFSNumOut = Parent->DFSNumIn + 1; - - ETNode *son = Parent->Son; - if (son && visited.count(son) == 0) { - - DFSInStack.push_back(son); - son->DFSNumIn = Parent->DFSNumIn + 1; - visited.insert(son); - - for (ETNode *s = son->Right; s != son; s = s->Right) { - DFSInStack.push_back(s); - s->DFSNumIn = Parent->DFSNumIn + 1; - visited.insert(s); - } - } - } -} - //===----------------------------------------------------------------------===// // ETForestBase Implementation //===----------------------------------------------------------------------===// |