• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /macosx-10.10.1/llvmCore-3425.0.34/include/llvm/Analysis/

Lines Matching defs:DomTreeNodeBase

64 class DomTreeNodeBase {
66 DomTreeNodeBase<NodeT> *IDom;
67 std::vector<DomTreeNodeBase<NodeT> *> Children;
73 typedef typename std::vector<DomTreeNodeBase<NodeT> *>::iterator iterator;
74 typedef typename std::vector<DomTreeNodeBase<NodeT> *>::const_iterator
83 DomTreeNodeBase<NodeT> *getIDom() const { return IDom; }
84 const std::vector<DomTreeNodeBase<NodeT>*> &getChildren() const {
88 DomTreeNodeBase(NodeT *BB, DomTreeNodeBase<NodeT> *iDom)
91 DomTreeNodeBase<NodeT> *addChild(DomTreeNodeBase<NodeT> *C) {
104 bool compare(DomTreeNodeBase<NodeT> *Other) {
122 void setIDom(DomTreeNodeBase<NodeT> *NewIDom) {
125 typename std::vector<DomTreeNodeBase<NodeT>*>::iterator I =
145 bool DominatedBy(const DomTreeNodeBase<NodeT> *other) const {
151 EXTERN_TEMPLATE_INSTANTIATION(class DomTreeNodeBase<BasicBlock>);
152 EXTERN_TEMPLATE_INSTANTIATION(class DomTreeNodeBase<MachineBasicBlock>);
156 const DomTreeNodeBase<NodeT> *Node) {
168 inline void PrintDomTree(const DomTreeNodeBase<NodeT> *N, raw_ostream &o,
171 for (typename DomTreeNodeBase<NodeT>::const_iterator I = N->begin(),
176 typedef DomTreeNodeBase<BasicBlock> DomTreeNode;
188 bool dominatedBySlowTreeWalk(const DomTreeNodeBase<NodeT> *A,
189 const DomTreeNodeBase<NodeT> *B) const {
194 const DomTreeNodeBase<NodeT> *IDom;
201 typedef DenseMap<NodeT*, DomTreeNodeBase<NodeT>*> DomTreeNodeMapType;
203 DomTreeNodeBase<NodeT> *RootNode;
289 DomTreeNodeBase<NodeT> *NewBBNode = DT.addNewBlock(NewBB, NewBBIDom);
294 DomTreeNodeBase<NodeT> *NewBBSuccNode = DT.getNode(NewBBSucc);
320 DomTreeNodeBase<NodeT>* MyNd = I->second;
321 DomTreeNodeBase<NodeT>* OtherNd = OI->second;
335 inline DomTreeNodeBase<NodeT> *getNode(NodeT *BB) const {
346 DomTreeNodeBase<NodeT> *getRootNode() { return RootNode; }
347 const DomTreeNodeBase<NodeT> *getRootNode() const { return RootNode; }
352 bool properlyDominates(const DomTreeNodeBase<NodeT> *A,
353 const DomTreeNodeBase<NodeT> *B) {
371 inline bool isReachableFromEntry(const DomTreeNodeBase<NodeT> *A) const {
378 inline bool dominates(const DomTreeNodeBase<NodeT> *A,
379 const DomTreeNodeBase<NodeT> *B) {
443 DomTreeNodeBase<NodeT> *NodeA = getNode(A);
444 DomTreeNodeBase<NodeT> *NodeB = getNode(B);
447 SmallPtrSet<DomTreeNodeBase<NodeT>*, 16> NodeADoms;
449 DomTreeNodeBase<NodeT> *IDomA = NodeA->getIDom();
456 DomTreeNodeBase<NodeT> *IDomB = NodeB->getIDom();
481 DomTreeNodeBase<NodeT> *addNewBlock(NodeT *BB, NodeT *DomBB) {
483 DomTreeNodeBase<NodeT> *IDomNode = getNode(DomBB);
487 IDomNode->addChild(new DomTreeNodeBase<NodeT>(BB, IDomNode));
493 void changeImmediateDominator(DomTreeNodeBase<NodeT> *N,
494 DomTreeNodeBase<NodeT> *NewIDom) {
508 DomTreeNodeBase<NodeT> *Node = getNode(BB);
513 DomTreeNodeBase<NodeT> *IDom = Node->getIDom();
515 typename std::vector<DomTreeNodeBase<NodeT>*>::iterator I =
582 SmallVector<std::pair<DomTreeNodeBase<NodeT>*,
583 typename DomTreeNodeBase<NodeT>::iterator>, 32> WorkStack;
585 DomTreeNodeBase<NodeT> *ThisRoot = getRootNode();
598 DomTreeNodeBase<NodeT> *Node = WorkStack.back().first;
599 typename DomTreeNodeBase<NodeT>::iterator ChildIt =
609 DomTreeNodeBase<NodeT> *Child = *ChildIt;
621 DomTreeNodeBase<NodeT> *getNodeForBlock(NodeT *BB) {
622 if (DomTreeNodeBase<NodeT> *Node = getNode(BB))
630 DomTreeNodeBase<NodeT> *IDomNode = getNodeForBlock(IDom);
634 DomTreeNodeBase<NodeT> *C = new DomTreeNodeBase<NodeT>(BB, IDomNode);