From: Chris Lattner Date: Thu, 26 Sep 2002 16:14:41 +0000 (+0000) Subject: - Add methods to ImmediateDominators & DominatorTree to allow updates X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=d74472ed21b1ff6d75c8ae2f4f2885e019d0907d;p=oota-llvm.git - Add methods to ImmediateDominators & DominatorTree to allow updates - Make DominatorTree::Node not inherit from std::vector git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3939 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/VMCore/Dominators.cpp b/lib/VMCore/Dominators.cpp index cd0825c128a..e6f18ec3b36 100644 --- a/lib/VMCore/Dominators.cpp +++ b/lib/VMCore/Dominators.cpp @@ -186,6 +186,23 @@ void DominatorTreeBase::reset() { Nodes.clear(); } +void DominatorTreeBase::Node2::setIDom(Node2 *NewIDom) { + assert(IDom && "No immediate dominator?"); + if (IDom != NewIDom) { + std::vector::iterator I = + std::find(IDom->Children.begin(), IDom->Children.end(), this); + assert(I != IDom->Children.end() && + "Not in immediate dominator children set!"); + // I am no longer your child... + IDom->Children.erase(I); + + // Switch to new dominator + IDom = NewIDom; + IDom->Children.push_back(this); + } +} + + void DominatorTree::calculate(const DominatorSet &DS) { Nodes[Root] = new Node(Root, 0); // Add a node for the root...