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

References

lib/Target/Hexagon/HexagonOptAddrMode.cpp
   90   bool processBlock(NodeAddr<BlockNode *> BA);
   92                   NodeAddr<UseNode *> UseN, unsigned UseMOnum);
   93   bool processAddUses(NodeAddr<StmtNode *> AddSN, MachineInstr *AddMI,
   99   bool canRemoveAddasl(NodeAddr<StmtNode *> AddAslSN, MachineInstr &MI,
  101   bool isSafeToExtLR(NodeAddr<StmtNode *> SN, MachineInstr *MI,
  103   void getAllRealUses(NodeAddr<StmtNode *> SN, NodeList &UNodeList);
  104   bool allValidCandidates(NodeAddr<StmtNode *> SA, NodeList &UNodeList);
  109   bool changeAddAsl(NodeAddr<UseNode *> AddAslUN, MachineInstr *AddAslMI,
  157 bool HexagonOptAddrMode::canRemoveAddasl(NodeAddr<StmtNode *> AddAslSN,
  168   for (NodeAddr<UseNode *> UA : AddAslSN.Addr->members_if(DFG->IsUse, *DFG)) {
  177     NodeAddr<UseNode *> UA = *I;
  178     NodeAddr<InstrNode *> IA = UA.Addr->getOwner(*DFG);
  181     NodeAddr<RefNode*> AA = LV->getNearestAliasedRef(OffsetRR, IA);
  187     NodeAddr<DefNode *> OffsetRegDN = DFG->addr<DefNode *>(OffsetRegRD);
  211 bool HexagonOptAddrMode::allValidCandidates(NodeAddr<StmtNode *> SA,
  214     NodeAddr<UseNode *> UN = *I;
  243 void HexagonOptAddrMode::getAllRealUses(NodeAddr<StmtNode *> SA,
  245   for (NodeAddr<DefNode *> DA : SA.Addr->members_if(DFG->IsDef, *DFG)) {
  253       NodeAddr<UseNode *> UA = DFG->addr<UseNode *>(UI);
  261         NodeAddr<PhiNode *> PA = UA.Addr->getOwner(*DFG);
  272               NodeAddr<UseNode *> phiUA = DFG->addr<UseNode *>(phiUI.first);
  283 bool HexagonOptAddrMode::isSafeToExtLR(NodeAddr<StmtNode *> SN,
  290   for (NodeAddr<UseNode *> UA : SN.Addr->members_if(DFG->IsUse, *DFG)) {
  299     NodeAddr<UseNode *> UA = *I;
  300     NodeAddr<InstrNode *> IA = UA.Addr->getOwner(*DFG);
  305     NodeAddr<RefNode*> AA = LV->getNearestAliasedRef(LRExtRR, IA);
  314     NodeAddr<DefNode *> LRExtRegDN = DFG->addr<DefNode *>(LRExtRegRD);
  347 bool HexagonOptAddrMode::processAddUses(NodeAddr<StmtNode *> AddSN,
  353     NodeAddr<UseNode *> UN = *I;
  354     NodeAddr<StmtNode *> SN = UN.Addr->getOwner(*DFG);
  393     NodeAddr<UseNode *> UseN = *I;
  397     NodeAddr<StmtNode *> OwnerN = UseN.Addr->getOwner(*DFG);
  440     NodeAddr<UseNode *> UN = *I;
  441     NodeAddr<StmtNode *> SN = UN.Addr->getOwner(*DFG);
  602 bool HexagonOptAddrMode::changeAddAsl(NodeAddr<UseNode *> AddAslUN,
  606   NodeAddr<StmtNode *> SA = AddAslUN.Addr->getOwner(*DFG);
  614     NodeAddr<UseNode *> UseUN = *I;
  618     NodeAddr<StmtNode *> UseIA = UseUN.Addr->getOwner(*DFG);
  668                                     NodeAddr<UseNode *> UseN,
  686 bool HexagonOptAddrMode::processBlock(NodeAddr<BlockNode *> BA) {
  693     NodeAddr<StmtNode *> SA = IA;
  743       NodeAddr<UseNode *> UseN = *I;
  747       NodeAddr<StmtNode *> OwnerN = UseN.Addr->getOwner(*DFG);
  801   NodeAddr<FuncNode *> FA = DFG->getFunc();
  805   for (NodeAddr<BlockNode *> BA : FA.Addr->members(*DFG))
lib/Target/Hexagon/HexagonRDFOpt.cpp
   94   bool rewrite(NodeAddr<InstrNode*> IA, SetVector<NodeId> &Remove);
   95   void removeOperand(NodeAddr<InstrNode*> IA, unsigned OpNum);
  162   for (NodeAddr<BlockNode*> BA : DFG.getFunc().Addr->members(DFG)) {
  164       NodeAddr<StmtNode*> SA = TA;
  165       for (NodeAddr<RefNode*> RA : SA.Addr->members(DFG)) {
  188 void HexagonDCE::removeOperand(NodeAddr<InstrNode*> IA, unsigned OpNum) {
  200   for (NodeAddr<RefNode*> RA : Refs)
  205   for (NodeAddr<RefNode*> RA : Refs) {
  214 bool HexagonDCE::rewrite(NodeAddr<InstrNode*> IA, SetVector<NodeId> &Remove) {
  257   for (NodeAddr<DefNode*> DA : IA.Addr->members_if(DFG.IsDef, DFG)) {
lib/Target/Hexagon/RDFCopy.cpp
   63 void CopyPropagation::recordCopy(NodeAddr<StmtNode*> SA, EqualityMap &EM) {
   70   NodeAddr<BlockNode*> BA = DFG.findBlock(B);
   72   for (NodeAddr<InstrNode*> IA : BA.Addr->members(DFG)) {
   74       NodeAddr<StmtNode*> SA = IA;
   89       NodeAddr<InstrNode*> IA) {
   90   NodeAddr<RefNode*> RA = L.getNearestAliasedRef(RefRR, IA);
  144     for (NodeAddr<DefNode*> DA : SA.Addr->members_if(DFG.IsDef, DFG)) {
  164         NodeAddr<InstrNode*> IA = UA.Addr->getOwner(DFG);
lib/Target/Hexagon/RDFCopy.h
   52     void recordCopy(NodeAddr<StmtNode*> SA, EqualityMap &EM);
   54     NodeId getLocalReachingDef(RegisterRef RefRR, NodeAddr<InstrNode*> IA);
lib/Target/Hexagon/RDFDeadCode.cpp
   82 void DeadCodeElimination::scanInstr(NodeAddr<InstrNode*> IA,
   88   for (NodeAddr<RefNode*> RA : IA.Addr->members(DFG)) {
   94 void DeadCodeElimination::processDef(NodeAddr<DefNode*> DA,
   96   NodeAddr<InstrNode*> IA = DA.Addr->getOwner(DFG);
   97   for (NodeAddr<UseNode*> UA : IA.Addr->members_if(DFG.IsUse, DFG)) {
  101   for (NodeAddr<DefNode*> TA : DFG.getRelatedRefs(IA, DA))
  105 void DeadCodeElimination::processUse(NodeAddr<UseNode*> UA,
  107   for (NodeAddr<DefNode*> DA : LV.getAllReachingDefs(UA)) {
  128   for (NodeAddr<BlockNode*> BA : DFG.getFunc().Addr->members(DFG))
  129     for (NodeAddr<InstrNode*> IA : BA.Addr->members(DFG))
  151     for (NodeAddr<DefNode*> DA : IA.Addr->members_if(DFG.IsDef, DFG))
  157   for (NodeAddr<BlockNode*> BA : DFG.getFunc().Addr->members(DFG)) {
  158     for (NodeAddr<InstrNode*> IA : BA.Addr->members(DFG)) {
  159       for (NodeAddr<RefNode*> RA : IA.Addr->members(DFG))
  221   for (NodeAddr<RefNode*> RA : DRNs) {
  231   for (NodeAddr<InstrNode*> IA : DINs) {
  232     NodeAddr<BlockNode*> BA = IA.Addr->getOwner(DFG);
lib/Target/Hexagon/RDFDeadCode.h
   59     void scanInstr(NodeAddr<InstrNode*> IA, SetQueue<NodeId> &WorkQ);
   60     void processDef(NodeAddr<DefNode*> DA, SetQueue<NodeId> &WorkQ);
   61     void processUse(NodeAddr<UseNode*> UA, SetQueue<NodeId> &WorkQ);
lib/Target/Hexagon/RDFGraph.cpp
  108 static void printRefHeader(raw_ostream &OS, const NodeAddr<RefNode*> RA,
  116 raw_ostream &operator<< (raw_ostream &OS, const Print<NodeAddr<DefNode*>> &P) {
  133 raw_ostream &operator<< (raw_ostream &OS, const Print<NodeAddr<UseNode*>> &P) {
  145       const Print<NodeAddr<PhiUseNode*>> &P) {
  159 raw_ostream &operator<< (raw_ostream &OS, const Print<NodeAddr<RefNode*>> &P) {
  208     for (NodeAddr<T> A : P.List) {
  218 raw_ostream &operator<< (raw_ostream &OS, const Print<NodeAddr<PhiNode*>> &P) {
  224 raw_ostream &operator<<(raw_ostream &OS, const Print<NodeAddr<StmtNode *>> &P) {
  250       const Print<NodeAddr<InstrNode*>> &P) {
  266       const Print<NodeAddr<BlockNode*>> &P) {
  298 raw_ostream &operator<<(raw_ostream &OS, const Print<NodeAddr<FuncNode *>> &P) {
  365 NodeAddr<NodeBase*> NodeAllocator::New() {
  371   NodeAddr<NodeBase*> NA = { reinterpret_cast<NodeBase*>(ActiveEnd),
  396 void NodeBase::append(NodeAddr<NodeBase*> NA) {
  434 NodeAddr<NodeBase*> RefNode::getOwner(const DataFlowGraph &G) {
  435   NodeAddr<NodeBase*> NA = G.addr<NodeBase*>(getNext());
  446 void DefNode::linkToDef(NodeId Self, NodeAddr<DefNode*> DA) {
  453 void UseNode::linkToDef(NodeId Self, NodeAddr<DefNode*> DA) {
  460 NodeAddr<NodeBase*> CodeNode::getFirstMember(const DataFlowGraph &G) const {
  467 NodeAddr<NodeBase*> CodeNode::getLastMember(const DataFlowGraph &G) const {
  474 void CodeNode::addMember(NodeAddr<NodeBase*> NA, const DataFlowGraph &G) {
  475   NodeAddr<NodeBase*> ML = getLastMember(G);
  487 void CodeNode::addMemberAfter(NodeAddr<NodeBase*> MA, NodeAddr<NodeBase*> NA,
  487 void CodeNode::addMemberAfter(NodeAddr<NodeBase*> MA, NodeAddr<NodeBase*> NA,
  495 void CodeNode::removeMember(NodeAddr<NodeBase*> NA, const DataFlowGraph &G) {
  496   NodeAddr<NodeBase*> MA = getFirstMember(G);
  533 NodeAddr<NodeBase*> InstrNode::getOwner(const DataFlowGraph &G) {
  534   NodeAddr<NodeBase*> NA = G.addr<NodeBase*>(getNext());
  546 void BlockNode::addPhi(NodeAddr<PhiNode*> PA, const DataFlowGraph &G) {
  547   NodeAddr<NodeBase*> M = getFirstMember(G);
  562     NodeAddr<NodeBase*> MN = M;
  576 NodeAddr<BlockNode*> FuncNode::findBlock(const MachineBasicBlock *BB,
  588 NodeAddr<BlockNode*> FuncNode::getEntryBlock(const DataFlowGraph &G) {
  778 NodeAddr<NodeBase*> DataFlowGraph::newNode(uint16_t Attrs) {
  779   NodeAddr<NodeBase*> P = Memory.New();
  787 NodeAddr<NodeBase*> DataFlowGraph::cloneNode(const NodeAddr<NodeBase*> B) {
  787 NodeAddr<NodeBase*> DataFlowGraph::cloneNode(const NodeAddr<NodeBase*> B) {
  788   NodeAddr<NodeBase*> NA = newNode(0);
  792     NodeAddr<RefNode*> RA = NA;
  796       NodeAddr<DefNode*> DA = NA;
  806 NodeAddr<UseNode*> DataFlowGraph::newUse(NodeAddr<InstrNode*> Owner,
  806 NodeAddr<UseNode*> DataFlowGraph::newUse(NodeAddr<InstrNode*> Owner,
  808   NodeAddr<UseNode*> UA = newNode(NodeAttrs::Ref | NodeAttrs::Use | Flags);
  813 NodeAddr<PhiUseNode*> DataFlowGraph::newPhiUse(NodeAddr<PhiNode*> Owner,
  813 NodeAddr<PhiUseNode*> DataFlowGraph::newPhiUse(NodeAddr<PhiNode*> Owner,
  814       RegisterRef RR, NodeAddr<BlockNode*> PredB, uint16_t Flags) {
  815   NodeAddr<PhiUseNode*> PUA = newNode(NodeAttrs::Ref | NodeAttrs::Use | Flags);
  822 NodeAddr<DefNode*> DataFlowGraph::newDef(NodeAddr<InstrNode*> Owner,
  822 NodeAddr<DefNode*> DataFlowGraph::newDef(NodeAddr<InstrNode*> Owner,
  824   NodeAddr<DefNode*> DA = newNode(NodeAttrs::Ref | NodeAttrs::Def | Flags);
  829 NodeAddr<DefNode*> DataFlowGraph::newDef(NodeAddr<InstrNode*> Owner,
  829 NodeAddr<DefNode*> DataFlowGraph::newDef(NodeAddr<InstrNode*> Owner,
  831   NodeAddr<DefNode*> DA = newNode(NodeAttrs::Ref | NodeAttrs::Def | Flags);
  837 NodeAddr<PhiNode*> DataFlowGraph::newPhi(NodeAddr<BlockNode*> Owner) {
  837 NodeAddr<PhiNode*> DataFlowGraph::newPhi(NodeAddr<BlockNode*> Owner) {
  838   NodeAddr<PhiNode*> PA = newNode(NodeAttrs::Code | NodeAttrs::Phi);
  843 NodeAddr<StmtNode*> DataFlowGraph::newStmt(NodeAddr<BlockNode*> Owner,
  843 NodeAddr<StmtNode*> DataFlowGraph::newStmt(NodeAddr<BlockNode*> Owner,
  845   NodeAddr<StmtNode*> SA = newNode(NodeAttrs::Code | NodeAttrs::Stmt);
  851 NodeAddr<BlockNode*> DataFlowGraph::newBlock(NodeAddr<FuncNode*> Owner,
  851 NodeAddr<BlockNode*> DataFlowGraph::newBlock(NodeAddr<FuncNode*> Owner,
  853   NodeAddr<BlockNode*> BA = newNode(NodeAttrs::Code | NodeAttrs::Block);
  859 NodeAddr<FuncNode*> DataFlowGraph::newFunc(MachineFunction *MF) {
  860   NodeAddr<FuncNode*> FA = newNode(NodeAttrs::Code | NodeAttrs::Func);
  874     NodeAddr<BlockNode*> BA = newBlock(Func, &B);
  883   NodeAddr<BlockNode*> EA = Func.Addr->getEntryBlock(*this);
  888   for (NodeAddr<BlockNode*> BA : Blocks)
  889     for (NodeAddr<InstrNode*> IA : BA.Addr->members(*this))
  890       for (NodeAddr<RefNode*> RA : IA.Addr->members(*this))
  908     NodeAddr<PhiNode*> PA = newPhi(EA);
  910     NodeAddr<DefNode*> DA = newDef(PA, RR, PhiFlags);
  921     for (NodeAddr<BlockNode*> BA : Blocks) {
  933         NodeAddr<PhiNode*> PA = newPhi(BA);
  936         NodeAddr<DefNode*> DA = newDef(PA, RR, PhiFlags);
  939         for (NodeAddr<BlockNode*> PBA : Preds) {
  940           NodeAddr<PhiUseNode*> PUA = newPhiUse(PA, RR, PBA);
  950   for (NodeAddr<BlockNode*> BA : Blocks)
  952   for (NodeAddr<BlockNode*> BA : Blocks)
 1023 void DataFlowGraph::pushAllDefs(NodeAddr<InstrNode*> IA, DefStackMap &DefM) {
 1030 void DataFlowGraph::pushClobbers(NodeAddr<InstrNode*> IA, DefStackMap &DefM) {
 1046   for (NodeAddr<DefNode*> DA : IA.Addr->members_if(IsDef, *this)) {
 1053     NodeAddr<DefNode*> PDA = Rel.front();
 1067     for (NodeAddr<NodeBase*> T : Rel)
 1074 void DataFlowGraph::pushDefs(NodeAddr<InstrNode*> IA, DefStackMap &DefM) {
 1092   for (NodeAddr<DefNode*> DA : IA.Addr->members_if(IsDef, *this)) {
 1099     NodeAddr<DefNode*> PDA = Rel.front();
 1121     for (NodeAddr<NodeBase*> T : Rel)
 1154 NodeAddr<RefNode*> DataFlowGraph::getNextRelated(NodeAddr<InstrNode*> IA,
 1154 NodeAddr<RefNode*> DataFlowGraph::getNextRelated(NodeAddr<InstrNode*> IA,
 1155       NodeAddr<RefNode*> RA) const {
 1175     const NodeAddr<const PhiUseNode*> TUA = TA;
 1176     const NodeAddr<const PhiUseNode*> RUA = RA;
 1192 std::pair<NodeAddr<RefNode*>,NodeAddr<RefNode*>>
 1192 std::pair<NodeAddr<RefNode*>,NodeAddr<RefNode*>>
 1193 DataFlowGraph::locateNextRef(NodeAddr<InstrNode*> IA, NodeAddr<RefNode*> RA,
 1193 DataFlowGraph::locateNextRef(NodeAddr<InstrNode*> IA, NodeAddr<RefNode*> RA,
 1197   NodeAddr<RefNode*> NA;
 1215 NodeAddr<RefNode*> DataFlowGraph::getNextShadow(NodeAddr<InstrNode*> IA,
 1215 NodeAddr<RefNode*> DataFlowGraph::getNextShadow(NodeAddr<InstrNode*> IA,
 1216       NodeAddr<RefNode*> RA, bool Create) {
 1228   NodeAddr<RefNode*> NA = cloneNode(RA);
 1236 NodeAddr<RefNode*> DataFlowGraph::getNextShadow(NodeAddr<InstrNode*> IA,
 1236 NodeAddr<RefNode*> DataFlowGraph::getNextShadow(NodeAddr<InstrNode*> IA,
 1237       NodeAddr<RefNode*> RA) const {
 1248 void DataFlowGraph::buildStmt(NodeAddr<BlockNode*> BA, MachineInstr &In) {
 1249   NodeAddr<StmtNode*> SA = newStmt(BA, &In);
 1310     NodeAddr<DefNode*> DA = newDef(SA, Op, Flags);
 1324     NodeAddr<DefNode*> DA = newDef(SA, Op, Flags);
 1359     NodeAddr<DefNode*> DA = newDef(SA, Op, Flags);
 1376     NodeAddr<UseNode*> UA = newUse(SA, Op, Flags);
 1384       NodeAddr<BlockNode*> BA) {
 1400   for (NodeAddr<InstrNode*> IA : BA.Addr->members(*this))
 1401     for (NodeAddr<RefNode*> RA : IA.Addr->members_if(IsDef, *this))
 1416     NodeAddr<BlockNode*> DBA = findBlock(DB);
 1424       NodeAddr<BlockNode*> BA) {
 1486     NodeAddr<PhiNode*> PA = newPhi(BA);
 1492       NodeAddr<DefNode*> DA = newDef(PA, RR, PhiFlags);
 1496     for (NodeAddr<BlockNode*> PBA : Preds) {
 1499         NodeAddr<PhiUseNode*> PUA = newPhiUse(PA, RR, PBA);
 1520   for (NodeAddr<BlockNode*> BA : Func.Addr->members(*this)) {
 1526     for (NodeAddr<NodeBase*> M : Ms) {
 1529       NodeAddr<DefNode*> DA = M;
 1545     for (NodeAddr<RefNode*> RA : Refs) {
 1548         NodeAddr<InstrNode*> OA = RDA.Addr->getOwner(*this);
 1557     NodeAddr<BlockNode*> BA = PA.Addr->getOwner(*this);
 1566 void DataFlowGraph::linkRefUp(NodeAddr<InstrNode*> IA, NodeAddr<T> TA,
 1566 void DataFlowGraph::linkRefUp(NodeAddr<InstrNode*> IA, NodeAddr<T> TA,
 1571   NodeAddr<T> TAP;
 1590     NodeAddr<DefNode*> RDA = *I;
 1611 void DataFlowGraph::linkStmtRefs(DefStackMap &DefM, NodeAddr<StmtNode*> SA,
 1618   for (NodeAddr<RefNode*> RA : SA.Addr->members_if(P, *this)) {
 1643 void DataFlowGraph::linkBlockRefs(DefStackMap &DefM, NodeAddr<BlockNode*> BA) {
 1658   for (NodeAddr<InstrNode*> IA : BA.Addr->members(*this)) {
 1679     NodeAddr<BlockNode*> SBA = findBlock(SB);
 1688     NodeAddr<PhiUseNode*> PUA = NA;
 1697     NodeAddr<BlockNode*> SBA = findBlock(SB);
 1698     for (NodeAddr<InstrNode*> IA : SBA.Addr->members_if(IsPhi, *this)) {
 1702         NodeAddr<RefNode*> RA = IA.Addr->getFirstMember(*this);
 1709         NodeAddr<PhiUseNode*> PUA = U;
 1721 void DataFlowGraph::unlinkUseDF(NodeAddr<UseNode*> UA) {
 1748 void DataFlowGraph::unlinkDefDF(NodeAddr<DefNode*> DA) {
 1787     for (NodeAddr<RefNode*> I : ReachedDefs)
 1789     for (NodeAddr<RefNode*> I : ReachedUses)
 1792   for (NodeAddr<DefNode*> I : ReachedDefs)
 1794   for (NodeAddr<UseNode*> I : ReachedUses)
lib/Target/Hexagon/RDFGraph.h
  340     template <typename S> NodeAddr(const NodeAddr<S> &NA)
  343     bool operator== (const NodeAddr<T> &NA) const {
  343     bool operator== (const NodeAddr<T> &NA) const {
  343     bool operator== (const NodeAddr<T> &NA) const {
  347     bool operator!= (const NodeAddr<T> &NA) const {
  347     bool operator!= (const NodeAddr<T> &NA) const {
  347     bool operator!= (const NodeAddr<T> &NA) const {
  391     NodeAddr<NodeBase*> New();
  464     void append(NodeAddr<NodeBase*> NA);
  512   using NodeList = SmallVector<NodeAddr<NodeBase *>, 4>;
  553     NodeAddr<RefNode*> getNextRef(RegisterRef RR, Predicate P, bool NextOnly,
  555     NodeAddr<NodeBase*> getOwner(const DataFlowGraph &G);
  572     void linkToDef(NodeId Self, NodeAddr<DefNode*> DA);
  576     void linkToDef(NodeId Self, NodeAddr<DefNode*> DA);
  598     NodeAddr<NodeBase*> getFirstMember(const DataFlowGraph &G) const;
  599     NodeAddr<NodeBase*> getLastMember(const DataFlowGraph &G) const;
  600     void addMember(NodeAddr<NodeBase*> NA, const DataFlowGraph &G);
  601     void addMemberAfter(NodeAddr<NodeBase*> MA, NodeAddr<NodeBase*> NA,
  601     void addMemberAfter(NodeAddr<NodeBase*> MA, NodeAddr<NodeBase*> NA,
  603     void removeMember(NodeAddr<NodeBase*> NA, const DataFlowGraph &G);
  611     NodeAddr<NodeBase*> getOwner(const DataFlowGraph &G);
  631     void addPhi(NodeAddr<PhiNode*> PA, const DataFlowGraph &G);
  639     NodeAddr<BlockNode*> findBlock(const MachineBasicBlock *BB,
  641     NodeAddr<BlockNode*> getEntryBlock(const DataFlowGraph &G);
  656     template <typename T> NodeAddr<T> addr(NodeId N) const {
  660     NodeAddr<FuncNode*> getFunc() const { return Func; }
  675       using value_type = NodeAddr<DefNode *>;
  711       void push(NodeAddr<DefNode*> DA) { Stack.push_back(DA); }
  736     void pushAllDefs(NodeAddr<InstrNode*> IA, DefStackMap &DM);
  754     NodeAddr<RefNode*> getNextRelated(NodeAddr<InstrNode*> IA,
  754     NodeAddr<RefNode*> getNextRelated(NodeAddr<InstrNode*> IA,
  755         NodeAddr<RefNode*> RA) const;
  756     NodeAddr<RefNode*> getNextImp(NodeAddr<InstrNode*> IA,
  756     NodeAddr<RefNode*> getNextImp(NodeAddr<InstrNode*> IA,
  757         NodeAddr<RefNode*> RA, bool Create);
  758     NodeAddr<RefNode*> getNextImp(NodeAddr<InstrNode*> IA,
  758     NodeAddr<RefNode*> getNextImp(NodeAddr<InstrNode*> IA,
  759         NodeAddr<RefNode*> RA) const;
  760     NodeAddr<RefNode*> getNextShadow(NodeAddr<InstrNode*> IA,
  760     NodeAddr<RefNode*> getNextShadow(NodeAddr<InstrNode*> IA,
  761         NodeAddr<RefNode*> RA, bool Create);
  762     NodeAddr<RefNode*> getNextShadow(NodeAddr<InstrNode*> IA,
  762     NodeAddr<RefNode*> getNextShadow(NodeAddr<InstrNode*> IA,
  763         NodeAddr<RefNode*> RA) const;
  768     NodeAddr<BlockNode*> findBlock(MachineBasicBlock *BB) const {
  772     void unlinkUse(NodeAddr<UseNode*> UA, bool RemoveFromOwner) {
  778     void unlinkDef(NodeAddr<DefNode*> DA, bool RemoveFromOwner) {
  786     static bool IsRef(const NodeAddr<NodeBase*> BA) {
  792     static bool IsCode(const NodeAddr<NodeBase*> BA) {
  797     static bool IsDef(const NodeAddr<NodeBase*> BA) {
  802     static bool IsUse(const NodeAddr<NodeBase*> BA) {
  807     static bool IsPhi(const NodeAddr<NodeBase*> BA) {
  812     static bool IsPreservingDef(const NodeAddr<DefNode*> DA) {
  822     NodeAddr<NodeBase*> newNode(uint16_t Attrs);
  823     NodeAddr<NodeBase*> cloneNode(const NodeAddr<NodeBase*> B);
  823     NodeAddr<NodeBase*> cloneNode(const NodeAddr<NodeBase*> B);
  824     NodeAddr<UseNode*> newUse(NodeAddr<InstrNode*> Owner,
  824     NodeAddr<UseNode*> newUse(NodeAddr<InstrNode*> Owner,
  826     NodeAddr<PhiUseNode*> newPhiUse(NodeAddr<PhiNode*> Owner,
  826     NodeAddr<PhiUseNode*> newPhiUse(NodeAddr<PhiNode*> Owner,
  827         RegisterRef RR, NodeAddr<BlockNode*> PredB,
  829     NodeAddr<DefNode*> newDef(NodeAddr<InstrNode*> Owner,
  829     NodeAddr<DefNode*> newDef(NodeAddr<InstrNode*> Owner,
  831     NodeAddr<DefNode*> newDef(NodeAddr<InstrNode*> Owner,
  831     NodeAddr<DefNode*> newDef(NodeAddr<InstrNode*> Owner,
  833     NodeAddr<PhiNode*> newPhi(NodeAddr<BlockNode*> Owner);
  833     NodeAddr<PhiNode*> newPhi(NodeAddr<BlockNode*> Owner);
  834     NodeAddr<StmtNode*> newStmt(NodeAddr<BlockNode*> Owner,
  834     NodeAddr<StmtNode*> newStmt(NodeAddr<BlockNode*> Owner,
  836     NodeAddr<BlockNode*> newBlock(NodeAddr<FuncNode*> Owner,
  836     NodeAddr<BlockNode*> newBlock(NodeAddr<FuncNode*> Owner,
  838     NodeAddr<FuncNode*> newFunc(MachineFunction *MF);
  841     std::pair<NodeAddr<RefNode*>,NodeAddr<RefNode*>>
  841     std::pair<NodeAddr<RefNode*>,NodeAddr<RefNode*>>
  842     locateNextRef(NodeAddr<InstrNode*> IA, NodeAddr<RefNode*> RA,
  842     locateNextRef(NodeAddr<InstrNode*> IA, NodeAddr<RefNode*> RA,
  847     void buildStmt(NodeAddr<BlockNode*> BA, MachineInstr &In);
  848     void recordDefsForDF(BlockRefsMap &PhiM, NodeAddr<BlockNode*> BA);
  850         NodeAddr<BlockNode*> BA);
  853     void pushClobbers(NodeAddr<InstrNode*> IA, DefStackMap &DM);
  854     void pushDefs(NodeAddr<InstrNode*> IA, DefStackMap &DM);
  855     template <typename T> void linkRefUp(NodeAddr<InstrNode*> IA,
  856         NodeAddr<T> TA, DefStack &DS);
  858         NodeAddr<StmtNode*> SA, Predicate P);
  859     void linkBlockRefs(DefStackMap &DefM, NodeAddr<BlockNode*> BA);
  861     void unlinkUseDF(NodeAddr<UseNode*> UA);
  862     void unlinkDefDF(NodeAddr<DefNode*> DA);
  864     void removeFromOwner(NodeAddr<RefNode*> RA) {
  865       NodeAddr<InstrNode*> IA = RA.Addr->getOwner(*this);
  878     NodeAddr<FuncNode*> Func;
  881     std::map<MachineBasicBlock*,NodeAddr<BlockNode*>> BlockNodes;
  887   NodeAddr<RefNode*> RefNode::getNextRef(RegisterRef RR, Predicate P,
  895         NodeAddr<RefNode*> RA = NA;
  904         NodeAddr<CodeNode*> CA = NA;
  936   struct PrintNode : Print<NodeAddr<T>> {
  937     PrintNode(const NodeAddr<T> &x, const DataFlowGraph &g)
  938       : Print<NodeAddr<T>>(x, g) {}
  943   raw_ostream &operator<<(raw_ostream &OS, const Print<NodeAddr<DefNode *>> &P);
  944   raw_ostream &operator<<(raw_ostream &OS, const Print<NodeAddr<UseNode *>> &P);
  946                           const Print<NodeAddr<PhiUseNode *>> &P);
  947   raw_ostream &operator<<(raw_ostream &OS, const Print<NodeAddr<RefNode *>> &P);
  950   raw_ostream &operator<<(raw_ostream &OS, const Print<NodeAddr<PhiNode *>> &P);
  952                           const Print<NodeAddr<StmtNode *>> &P);
  954                           const Print<NodeAddr<InstrNode *>> &P);
  956                           const Print<NodeAddr<BlockNode *>> &P);
  958                           const Print<NodeAddr<FuncNode *>> &P);
lib/Target/Hexagon/RDFLiveness.cpp
  173     NodeAddr<PhiNode*> PA = IA;
  174     NodeAddr<BlockNode*> BA = PA.Addr->getOwner(DFG);
  236     for (NodeAddr<DefNode*> DA : TA.Addr->members_if(DefInSet, DFG)) {
  250     for (NodeAddr<DefNode*> DA : Ds) {
  269 Liveness::getAllReachingDefsRec(RegisterRef RefRR, NodeAddr<RefNode*> RefA,
  275 Liveness::getAllReachingDefsRecImpl(RegisterRef RefRR, NodeAddr<RefNode*> RefA,
  294   for (NodeAddr<NodeBase*> R : RDs)
  299   for (NodeAddr<DefNode*> DA : RDs) {
  303     NodeAddr<PhiNode*> PA = DA.Addr->getOwner(DFG);
  322 NodeAddr<RefNode*> Liveness::getNearestAliasedRef(RegisterRef RefRR,
  323       NodeAddr<InstrNode*> IA) {
  324   NodeAddr<BlockNode*> BA = IA.Addr->getOwner(DFG);
  338     for (NodeAddr<InstrNode*> I : make_range(B, E)) {
  340       NodeAddr<RefNode*> Clob, Use;
  343       for (NodeAddr<RefNode*> R : Refs) {
  380       NodeAddr<DefNode*> DefA, const RegisterAggr &DefRRs) {
  429   NodeAddr<FuncNode*> FA = DFG.getFunc();
  431   for (NodeAddr<BlockNode*> BA : Blocks) {
  442   for (NodeAddr<PhiNode*> PhiA : Phis) {
  453     for (NodeAddr<RefNode*> R : PhiRefs) {
  468       NodeAddr<DefNode*> DA = DFG.addr<DefNode*>(DefQ[i]);
  474         NodeAddr<UseNode*> A = DFG.addr<UseNode*>(UN);
  487         NodeAddr<DefNode*> A = DFG.addr<DefNode*>(DN);
  525         for (NodeAddr<DefNode*> DA : getAllReachingDefs(R, UA)) {
  555       NodeAddr<PhiUseNode*> PUA = I;
  563       for (NodeAddr<DefNode*> D : Ds) {
  576       for (NodeAddr<PhiUseNode*> T : DFG.getRelatedRefs(PhiA, PUA))
  620     for (NodeAddr<UseNode*> UA : PUs) {
  669       NodeAddr<PhiNode*> PA = DFG.addr<PhiNode*>(I.first);
  686   for (NodeAddr<BlockNode*> BA : DFG.getFunc().Addr->members(DFG)) {
  688     for (NodeAddr<InstrNode*> IA : BA.Addr->members(DFG)) {
  689       for (NodeAddr<RefNode*> RA : IA.Addr->members(DFG))
  720   NodeAddr<FuncNode*> FA = DFG.getFunc();
  724   for (NodeAddr<BlockNode*> BA : Blocks) {
  742   for (NodeAddr<BlockNode*> BA : Blocks) {
  744     for (NodeAddr<PhiNode*> PA : Phis) {
  753         NodeAddr<PhiUseNode*> PUA = U;
  779             for (NodeAddr<DefNode*> D : Ds) {
  789         for (NodeAddr<PhiUseNode*> T : DFG.getRelatedRefs(PA, PUA))
 1001       NodeAddr<InstrNode*> IA = DA.Addr->getOwner(DFG);
 1002       NodeAddr<BlockNode*> BA = IA.Addr->getOwner(DFG);
 1033       for (NodeAddr<DefNode*> TA : getAllReachingDefs(DA)) {
 1035         NodeAddr<InstrNode*> ITA = TA.Addr->getOwner(DFG);
 1036         NodeAddr<BlockNode*> BTA = ITA.Addr->getOwner(DFG);
 1070     NodeAddr<InstrNode*> IA = I;
 1073     for (NodeAddr<UseNode*> UA : IA.Addr->members_if(DFG.IsUse, DFG)) {
 1077       for (NodeAddr<DefNode*> D : getAllReachingDefs(UA))
lib/Target/Hexagon/RDFLiveness.h
   70     NodeSet getAllReachedUses(RegisterRef RefRR, NodeAddr<DefNode*> DefA,
   73     NodeSet getAllReachedUses(RegisterRef RefRR, NodeAddr<DefNode*> DefA) {
   78         NodeAddr<RefNode*> RefA, NodeSet &Visited, const NodeSet &Defs);
   80     NodeAddr<RefNode*> getNearestAliasedRef(RegisterRef RefRR,
   81         NodeAddr<InstrNode*> IA);
  141         NodeAddr<RefNode*> RefA, NodeSet &Visited, const NodeSet &Defs,