reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
223 using NodeType = NodeT; 224 using NodePtr = NodeT *; 240 SmallVector<NodeT *, IsPostDom ? 4 : 1> Roots; 243 DenseMap<NodeT *, std::unique_ptr<DomTreeNodeBase<NodeT>>>; 243 DenseMap<NodeT *, std::unique_ptr<DomTreeNodeBase<NodeT>>>; 245 DomTreeNodeBase<NodeT> *RootNode = nullptr; 284 const SmallVectorImpl<NodeT *> &getRoots() const { return Roots; } 306 NodeT *BB = DomTreeNode.first; 312 DomTreeNodeBase<NodeT> &MyNd = *DomTreeNode.second; 313 DomTreeNodeBase<NodeT> &OtherNd = *OI->second; 328 DomTreeNodeBase<NodeT> *getNode(const NodeT *BB) const { 328 DomTreeNodeBase<NodeT> *getNode(const NodeT *BB) const { 336 DomTreeNodeBase<NodeT> *operator[](const NodeT *BB) const { 336 DomTreeNodeBase<NodeT> *operator[](const NodeT *BB) const { 347 DomTreeNodeBase<NodeT> *getRootNode() { return RootNode; } 348 const DomTreeNodeBase<NodeT> *getRootNode() const { return RootNode; } 351 void getDescendants(NodeT *R, SmallVectorImpl<NodeT *> &Result) const { 351 void getDescendants(NodeT *R, SmallVectorImpl<NodeT *> &Result) const { 353 const DomTreeNodeBase<NodeT> *RN = getNode(R); 356 SmallVector<const DomTreeNodeBase<NodeT> *, 8> WL; 360 const DomTreeNodeBase<NodeT> *N = WL.pop_back_val(); 369 bool properlyDominates(const DomTreeNodeBase<NodeT> *A, 370 const DomTreeNodeBase<NodeT> *B) const { 378 bool properlyDominates(const NodeT *A, const NodeT *B) const; 378 bool properlyDominates(const NodeT *A, const NodeT *B) const; 382 bool isReachableFromEntry(const NodeT *A) const { 388 bool isReachableFromEntry(const DomTreeNodeBase<NodeT> *A) const { return A; } 393 bool dominates(const DomTreeNodeBase<NodeT> *A, 394 const DomTreeNodeBase<NodeT> *B) const { 436 bool dominates(const NodeT *A, const NodeT *B) const; 436 bool dominates(const NodeT *A, const NodeT *B) const; 438 NodeT *getRoot() const { 445 NodeT *findNearestCommonDominator(NodeT *A, NodeT *B) const { 445 NodeT *findNearestCommonDominator(NodeT *A, NodeT *B) const { 445 NodeT *findNearestCommonDominator(NodeT *A, NodeT *B) const { 453 NodeT &Entry = A->getParent()->front(); 458 DomTreeNodeBase<NodeT> *NodeA = getNode(A); 459 DomTreeNodeBase<NodeT> *NodeB = getNode(B); 474 const NodeT *findNearestCommonDominator(const NodeT *A, 474 const NodeT *findNearestCommonDominator(const NodeT *A, 475 const NodeT *B) const { 482 bool isVirtualRoot(const DomTreeNodeBase<NodeT> *A) const { 533 void insertEdge(NodeT *From, NodeT *To) { 533 void insertEdge(NodeT *From, NodeT *To) { 551 void deleteEdge(NodeT *From, NodeT *To) { 551 void deleteEdge(NodeT *From, NodeT *To) { 568 DomTreeNodeBase<NodeT> *addNewBlock(NodeT *BB, NodeT *DomBB) { 568 DomTreeNodeBase<NodeT> *addNewBlock(NodeT *BB, NodeT *DomBB) { 568 DomTreeNodeBase<NodeT> *addNewBlock(NodeT *BB, NodeT *DomBB) { 570 DomTreeNodeBase<NodeT> *IDomNode = getNode(DomBB); 582 DomTreeNodeBase<NodeT> *setNewRoot(NodeT *BB) { 582 DomTreeNodeBase<NodeT> *setNewRoot(NodeT *BB) { 587 DomTreeNodeBase<NodeT> *NewNode = (DomTreeNodes[BB] = 593 NodeT *OldRoot = Roots.front(); 606 void changeImmediateDominator(DomTreeNodeBase<NodeT> *N, 607 DomTreeNodeBase<NodeT> *NewIDom) { 613 void changeImmediateDominator(NodeT *BB, NodeT *NewBB) { 613 void changeImmediateDominator(NodeT *BB, NodeT *NewBB) { 620 void eraseNode(NodeT *BB) { 621 DomTreeNodeBase<NodeT> *Node = getNode(BB); 628 DomTreeNodeBase<NodeT> *IDom = Node->getIDom(); 651 void splitBlock(NodeT *NewBB) { 689 SmallVector<std::pair<const DomTreeNodeBase<NodeT> *, 690 typename DomTreeNodeBase<NodeT>::const_iterator>, 693 const DomTreeNodeBase<NodeT> *ThisRoot = getRootNode(); 706 const DomTreeNodeBase<NodeT> *Node = WorkStack.back().first; 716 const DomTreeNodeBase<NodeT> *Child = *ChildIt; 758 void addRoot(NodeT *BB) { this->Roots.push_back(BB); } 797 NodeT *NewBBIDom = nullptr; 816 DomTreeNodeBase<NodeT> *NewBBNode = addNewBlock(NewBB, NewBBIDom); 821 DomTreeNodeBase<NodeT> *NewBBSuccNode = getNode(NewBBSucc); 827 bool dominatedBySlowTreeWalk(const DomTreeNodeBase<NodeT> *A, 828 const DomTreeNodeBase<NodeT> *B) const { 834 const DomTreeNodeBase<NodeT> *IDom;