From: Devang Patel Date: Thu, 14 Sep 2006 21:43:24 +0000 (+0000) Subject: Undo previous check-in. X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=697e5905805634b343be39391c403c38d2e64999;p=oota-llvm.git Undo previous check-in. Reintroduce recursive assignDFSNumber(). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30380 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/Analysis/ET-Forest.h b/include/llvm/Analysis/ET-Forest.h index ef2b2155c72..b05776a9e0f 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 fd193b8d7aa..9f7e5d9365d 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 DFSInStack; - std::set 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 //===----------------------------------------------------------------------===//