reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
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,