Changes in directory llvm/include/llvm/Analysis:
Dominators.h updated: 1.102 -> 1.103 PostDominators.h updated: 1.23 -> 1.24 --- Log message: Break DominatorTree from ETNode. Remove unused PostETForest. --- Diffs of the changes: (+4 -54) Dominators.h | 34 ++++------------------------------ PostDominators.h | 24 ------------------------ 2 files changed, 4 insertions(+), 54 deletions(-) Index: llvm/include/llvm/Analysis/Dominators.h diff -u llvm/include/llvm/Analysis/Dominators.h:1.102 llvm/include/llvm/Analysis/Dominators.h:1.103 --- llvm/include/llvm/Analysis/Dominators.h:1.102 Mon Jun 11 19:14:41 2007 +++ llvm/include/llvm/Analysis/Dominators.h Mon Jun 11 19:54:38 2007 @@ -63,7 +63,6 @@ class DomTreeNode { BasicBlock *TheBB; DomTreeNode *IDom; - ETNode *ETN; std::vector<DomTreeNode*> Children; int DFSNumIn, DFSNumOut; @@ -78,14 +77,10 @@ inline BasicBlock *getBlock() const { return TheBB; } inline DomTreeNode *getIDom() const { return IDom; } - inline ETNode *getETNode() const { return ETN; } inline const std::vector<DomTreeNode*> &getChildren() const { return Children; } - inline DomTreeNode(BasicBlock *BB, DomTreeNode *iDom, ETNode *E) - : TheBB(BB), IDom(iDom), ETN(E), DFSNumIn(-1), DFSNumOut(-1) { - if (IDom) - ETN->setFather(IDom->getETNode()); - } + inline DomTreeNode(BasicBlock *BB, DomTreeNode *iDom) + : TheBB(BB), IDom(iDom), DFSNumIn(-1), DFSNumOut(-1) { } inline DomTreeNode *addChild(DomTreeNode *C) { Children.push_back(C); return C; } void setIDom(DomTreeNode *NewIDom); @@ -111,9 +106,6 @@ DomTreeNodeMapType DomTreeNodes; DomTreeNode *RootNode; - typedef std::map<BasicBlock*, ETNode*> ETMapType; - ETMapType ETNodes; - bool DFSInfoValid; unsigned int SlowQueries; // Information record used during immediate dominators computation. @@ -197,17 +189,6 @@ void updateDFSNumbers(); - /// Return the nearest common dominator of A and B. - BasicBlock *nearestCommonDominator(BasicBlock *A, BasicBlock *B) const { - ETNode *NodeA = getNode(A)->getETNode(); - ETNode *NodeB = getNode(B)->getETNode(); - - ETNode *Common = NodeA->NCA(NodeB); - if (!Common) - return NULL; - return Common->getData<BasicBlock>(); - } - /// isReachableFromEntry - Return true if A is dominated by the entry /// block of the function containing it. const bool isReachableFromEntry(BasicBlock* A); @@ -222,12 +203,8 @@ if (A == 0 || B == 0) return false; - ETNode *NodeA = A->getETNode(); - ETNode *NodeB = B->getETNode(); - if (DFSInfoValid) return B->DominatedBy(A); - //return NodeB->DominatedBy(NodeA); // If we end up with too many slow queries, just update the // DFS numbers on the theory that we are going to keep querying. @@ -235,9 +212,8 @@ if (SlowQueries > 32) { updateDFSNumbers(); return B->DominatedBy(A); - //return NodeB->DominatedBy(NodeA); } - //return NodeB->DominatedBySlow(NodeA); + return dominatedBySlowTreeWalk(A, B); } @@ -268,10 +244,8 @@ DomTreeNode *IDomNode = getNode(DomBB); assert(IDomNode && "Not immediate dominator specified for block!"); DFSInfoValid = false; - ETNode *E = new ETNode(BB); - ETNodes[BB] = E; return DomTreeNodes[BB] = - IDomNode->addChild(new DomTreeNode(BB, IDomNode, E)); + IDomNode->addChild(new DomTreeNode(BB, IDomNode)); } /// changeImmediateDominator - This method is used to update the dominator Index: llvm/include/llvm/Analysis/PostDominators.h diff -u llvm/include/llvm/Analysis/PostDominators.h:1.23 llvm/include/llvm/Analysis/PostDominators.h:1.24 --- llvm/include/llvm/Analysis/PostDominators.h:1.23 Sun Jun 3 19:32:21 2007 +++ llvm/include/llvm/Analysis/PostDominators.h Mon Jun 11 19:54:38 2007 @@ -51,30 +51,6 @@ }; -/// PostETForest Class - Concrete subclass of ETForestBase that is used to -/// compute a forwards post-dominator ET-Forest. -struct PostETForest : public ETForestBase { - static char ID; - PostETForest() : ETForestBase((intptr_t)&ID, true) {} - - virtual void getAnalysisUsage(AnalysisUsage &AU) const { - AU.setPreservesAll(); - AU.addRequired<PostDominatorTree>(); - } - - virtual bool runOnFunction(Function &F) { - reset(); // Reset from the last time we were run... - PostDominatorTree &DT = getAnalysis<PostDominatorTree>(); - Roots = DT.getRoots(); - calculate(DT); - return false; - } - - void calculate(const PostDominatorTree &DT); - ETNode *getNodeForBlock(BasicBlock *BB); -}; - - /// PostDominanceFrontier Class - Concrete subclass of DominanceFrontier that is /// used to compute the a post-dominance frontier. /// _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits