reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

References

include/llvm/Support/GenericDomTree.h
  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;