aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDevang Patel <dpatel@apple.com>2006-09-14 21:43:24 +0000
committerDevang Patel <dpatel@apple.com>2006-09-14 21:43:24 +0000
commit697e5905805634b343be39391c403c38d2e64999 (patch)
tree45595938e66781b60984b6d438b27ca116e62047
parent1ec72738ac685543a02068559877ec713b36a463 (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.h11
-rw-r--r--lib/VMCore/Dominators.cpp33
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
//===----------------------------------------------------------------------===//