Lines Matching refs:NodeAddr
111 static void printRefHeader(raw_ostream &OS, const NodeAddr<RefNode*> RA, in printRefHeader()
120 raw_ostream &operator<< (raw_ostream &OS, const Print<NodeAddr<DefNode*>> &P) { in operator <<()
138 raw_ostream &operator<< (raw_ostream &OS, const Print<NodeAddr<UseNode*>> &P) { in operator <<()
151 const Print<NodeAddr<PhiUseNode*>> &P) { in operator <<()
166 raw_ostream &operator<< (raw_ostream &OS, const Print<NodeAddr<RefNode*>> &P) { in operator <<()
217 for (NodeAddr<T> A : P.List) { in operator <<()
228 raw_ostream &operator<< (raw_ostream &OS, const Print<NodeAddr<PhiNode*>> &P) { in operator <<()
236 const Print<NodeAddr<StmtNode*>> &P) { in operator <<()
263 const Print<NodeAddr<InstrNode*>> &P) { in operator <<()
280 const Print<NodeAddr<BlockNode*>> &P) { in operator <<()
314 const Print<NodeAddr<FuncNode*>> &P) { in operator <<()
384 NodeAddr<NodeBase*> NodeAllocator::New() { in New()
390 NodeAddr<NodeBase*> NA = { reinterpret_cast<NodeBase*>(ActiveEnd), in New()
415 void NodeBase::append(NodeAddr<NodeBase*> NA) { in append()
453 NodeAddr<NodeBase*> RefNode::getOwner(const DataFlowGraph &G) { in getOwner()
454 NodeAddr<NodeBase*> NA = G.addr<NodeBase*>(getNext()); in getOwner()
465 void DefNode::linkToDef(NodeId Self, NodeAddr<DefNode*> DA) { in linkToDef()
472 void UseNode::linkToDef(NodeId Self, NodeAddr<DefNode*> DA) { in linkToDef()
479 NodeAddr<NodeBase*> CodeNode::getFirstMember(const DataFlowGraph &G) const { in getFirstMember()
481 return NodeAddr<NodeBase*>(); in getFirstMember()
486 NodeAddr<NodeBase*> CodeNode::getLastMember(const DataFlowGraph &G) const { in getLastMember()
488 return NodeAddr<NodeBase*>(); in getLastMember()
493 void CodeNode::addMember(NodeAddr<NodeBase*> NA, const DataFlowGraph &G) { in addMember()
494 NodeAddr<NodeBase*> ML = getLastMember(G); in addMember()
506 void CodeNode::addMemberAfter(NodeAddr<NodeBase*> MA, NodeAddr<NodeBase*> NA, in addMemberAfter()
514 void CodeNode::removeMember(NodeAddr<NodeBase*> NA, const DataFlowGraph &G) { in removeMember()
515 NodeAddr<NodeBase*> MA = getFirstMember(G); in removeMember()
547 static auto True = [] (NodeAddr<NodeBase*>) -> bool { return true; }; in members()
552 NodeAddr<NodeBase*> InstrNode::getOwner(const DataFlowGraph &G) { in getOwner()
553 NodeAddr<NodeBase*> NA = G.addr<NodeBase*>(getNext()); in getOwner()
565 void BlockNode::addPhi(NodeAddr<PhiNode*> PA, const DataFlowGraph &G) { in addPhi()
566 NodeAddr<NodeBase*> M = getFirstMember(G); in addPhi()
581 NodeAddr<NodeBase*> MN = M; in addPhi()
595 NodeAddr<BlockNode*> FuncNode::findBlock(const MachineBasicBlock *BB, in findBlock()
597 auto EqBB = [BB] (NodeAddr<NodeBase*> NA) -> bool { in findBlock()
598 return NodeAddr<BlockNode*>(NA).Addr->getCode() == BB; in findBlock()
603 return NodeAddr<BlockNode*>(); in findBlock()
607 NodeAddr<BlockNode*> FuncNode::getEntryBlock(const DataFlowGraph &G) { in getEntryBlock()
716 Stack.push_back(NodeAddr<DefNode*>(nullptr, N)); in start_block()
797 NodeAddr<NodeBase*> DataFlowGraph::newNode(uint16_t Attrs) { in newNode()
798 NodeAddr<NodeBase*> P = Memory.New(); in newNode()
806 NodeAddr<NodeBase*> DataFlowGraph::cloneNode(const NodeAddr<NodeBase*> B) { in cloneNode()
807 NodeAddr<NodeBase*> NA = newNode(0); in cloneNode()
811 NodeAddr<RefNode*> RA = NA; in cloneNode()
815 NodeAddr<DefNode*> DA = NA; in cloneNode()
825 NodeAddr<UseNode*> DataFlowGraph::newUse(NodeAddr<InstrNode*> Owner, in newUse()
827 NodeAddr<UseNode*> UA = newNode(NodeAttrs::Ref | NodeAttrs::Use | Flags); in newUse()
832 NodeAddr<PhiUseNode*> DataFlowGraph::newPhiUse(NodeAddr<PhiNode*> Owner, in newPhiUse()
833 RegisterRef RR, NodeAddr<BlockNode*> PredB, uint16_t Flags) { in newPhiUse()
834 NodeAddr<PhiUseNode*> PUA = newNode(NodeAttrs::Ref | NodeAttrs::Use | Flags); in newPhiUse()
841 NodeAddr<DefNode*> DataFlowGraph::newDef(NodeAddr<InstrNode*> Owner, in newDef()
843 NodeAddr<DefNode*> DA = newNode(NodeAttrs::Ref | NodeAttrs::Def | Flags); in newDef()
848 NodeAddr<DefNode*> DataFlowGraph::newDef(NodeAddr<InstrNode*> Owner, in newDef()
850 NodeAddr<DefNode*> DA = newNode(NodeAttrs::Ref | NodeAttrs::Def | Flags); in newDef()
856 NodeAddr<PhiNode*> DataFlowGraph::newPhi(NodeAddr<BlockNode*> Owner) { in newPhi()
857 NodeAddr<PhiNode*> PA = newNode(NodeAttrs::Code | NodeAttrs::Phi); in newPhi()
862 NodeAddr<StmtNode*> DataFlowGraph::newStmt(NodeAddr<BlockNode*> Owner, in newStmt()
864 NodeAddr<StmtNode*> SA = newNode(NodeAttrs::Code | NodeAttrs::Stmt); in newStmt()
870 NodeAddr<BlockNode*> DataFlowGraph::newBlock(NodeAddr<FuncNode*> Owner, in newBlock()
872 NodeAddr<BlockNode*> BA = newNode(NodeAttrs::Code | NodeAttrs::Block); in newBlock()
878 NodeAddr<FuncNode*> DataFlowGraph::newFunc(MachineFunction *MF) { in newFunc()
879 NodeAddr<FuncNode*> FA = newNode(NodeAttrs::Code | NodeAttrs::Func); in newFunc()
893 NodeAddr<BlockNode*> BA = newBlock(Func, &B); in build()
902 NodeAddr<BlockNode*> EA = Func.Addr->getEntryBlock(*this); in build()
907 for (NodeAddr<BlockNode*> BA : Blocks) in build()
908 for (NodeAddr<InstrNode*> IA : BA.Addr->members(*this)) in build()
909 for (NodeAddr<RefNode*> RA : IA.Addr->members(*this)) in build()
927 NodeAddr<PhiNode*> PA = newPhi(EA); in build()
929 NodeAddr<DefNode*> DA = newDef(PA, RR, PhiFlags); in build()
940 for (NodeAddr<BlockNode*> BA : Blocks) { in build()
952 NodeAddr<PhiNode*> PA = newPhi(BA); in build()
955 NodeAddr<DefNode*> DA = newDef(PA, RR, PhiFlags); in build()
958 for (NodeAddr<BlockNode*> PBA : Preds) { in build()
959 NodeAddr<PhiUseNode*> PUA = newPhiUse(PA, RR, PBA); in build()
969 for (NodeAddr<BlockNode*> BA : Blocks) in build()
971 for (NodeAddr<BlockNode*> BA : Blocks) in build()
1042 void DataFlowGraph::pushAllDefs(NodeAddr<InstrNode*> IA, DefStackMap &DefM) { in pushAllDefs()
1049 void DataFlowGraph::pushClobbers(NodeAddr<InstrNode*> IA, DefStackMap &DefM) { in pushClobbers()
1065 for (NodeAddr<DefNode*> DA : IA.Addr->members_if(IsDef, *this)) { in pushClobbers()
1072 NodeAddr<DefNode*> PDA = Rel.front(); in pushClobbers()
1086 for (NodeAddr<NodeBase*> T : Rel) in pushClobbers()
1093 void DataFlowGraph::pushDefs(NodeAddr<InstrNode*> IA, DefStackMap &DefM) { in pushDefs()
1111 for (NodeAddr<DefNode*> DA : IA.Addr->members_if(IsDef, *this)) { in pushDefs()
1118 NodeAddr<DefNode*> PDA = Rel.front(); in pushDefs()
1124 MachineInstr *MI = NodeAddr<StmtNode*>(IA).Addr->getCode(); in pushDefs()
1140 for (NodeAddr<NodeBase*> T : Rel) in pushDefs()
1147 NodeList DataFlowGraph::getRelatedRefs(NodeAddr<InstrNode*> IA, in getRelatedRefs()
1148 NodeAddr<RefNode*> RA) const { in getRelatedRefs()
1164 Func = NodeAddr<FuncNode*>(); in reset()
1173 NodeAddr<RefNode*> DataFlowGraph::getNextRelated(NodeAddr<InstrNode*> IA, in getNextRelated()
1174 NodeAddr<RefNode*> RA) const { in getNextRelated()
1177 auto Related = [this,RA](NodeAddr<RefNode*> TA) -> bool { in getNextRelated()
1184 auto RelatedStmt = [&Related,RA](NodeAddr<RefNode*> TA) -> bool { in getNextRelated()
1188 auto RelatedPhi = [&Related,RA](NodeAddr<RefNode*> TA) -> bool { in getNextRelated()
1194 const NodeAddr<const PhiUseNode*> TUA = TA; in getNextRelated()
1195 const NodeAddr<const PhiUseNode*> RUA = RA; in getNextRelated()
1211 std::pair<NodeAddr<RefNode*>,NodeAddr<RefNode*>>
1212 DataFlowGraph::locateNextRef(NodeAddr<InstrNode*> IA, NodeAddr<RefNode*> RA, in locateNextRef()
1216 NodeAddr<RefNode*> NA; in locateNextRef()
1229 return std::make_pair(RA, NodeAddr<RefNode*>()); in locateNextRef()
1234 NodeAddr<RefNode*> DataFlowGraph::getNextShadow(NodeAddr<InstrNode*> IA, in getNextShadow()
1235 NodeAddr<RefNode*> RA, bool Create) { in getNextShadow()
1239 auto IsShadow = [Flags] (NodeAddr<RefNode*> TA) -> bool { in getNextShadow()
1247 NodeAddr<RefNode*> NA = cloneNode(RA); in getNextShadow()
1255 NodeAddr<RefNode*> DataFlowGraph::getNextShadow(NodeAddr<InstrNode*> IA, in getNextShadow()
1256 NodeAddr<RefNode*> RA) const { in getNextShadow()
1259 auto IsShadow = [Flags] (NodeAddr<RefNode*> TA) -> bool { in getNextShadow()
1267 void DataFlowGraph::buildStmt(NodeAddr<BlockNode*> BA, MachineInstr &In) { in buildStmt()
1268 NodeAddr<StmtNode*> SA = newStmt(BA, &In); in buildStmt()
1329 NodeAddr<DefNode*> DA = newDef(SA, Op, Flags); in buildStmt()
1343 NodeAddr<DefNode*> DA = newDef(SA, Op, Flags); in buildStmt()
1378 NodeAddr<DefNode*> DA = newDef(SA, Op, Flags); in buildStmt()
1395 NodeAddr<UseNode*> UA = newUse(SA, Op, Flags); in buildStmt()
1403 NodeAddr<BlockNode*> BA) { in recordDefsForDF()
1419 for (NodeAddr<InstrNode*> IA : BA.Addr->members(*this)) in recordDefsForDF()
1420 for (NodeAddr<RefNode*> RA : IA.Addr->members_if(IsDef, *this)) in recordDefsForDF()
1435 NodeAddr<BlockNode*> DBA = findBlock(DB); in recordDefsForDF()
1443 NodeAddr<BlockNode*> BA) { in buildPhis()
1505 NodeAddr<PhiNode*> PA = newPhi(BA); in buildPhis()
1511 NodeAddr<DefNode*> DA = newDef(PA, RR, PhiFlags); in buildPhis()
1515 for (NodeAddr<BlockNode*> PBA : Preds) { in buildPhis()
1518 NodeAddr<PhiUseNode*> PUA = newPhiUse(PA, RR, PBA); in buildPhis()
1539 for (NodeAddr<BlockNode*> BA : Func.Addr->members(*this)) { in removeUnusedPhis()
1545 for (NodeAddr<NodeBase*> M : Ms) { in removeUnusedPhis()
1548 NodeAddr<DefNode*> DA = M; in removeUnusedPhis()
1564 for (NodeAddr<RefNode*> RA : Refs) { in removeUnusedPhis()
1567 NodeAddr<InstrNode*> OA = RDA.Addr->getOwner(*this); in removeUnusedPhis()
1576 NodeAddr<BlockNode*> BA = PA.Addr->getOwner(*this); in removeUnusedPhis()
1585 void DataFlowGraph::linkRefUp(NodeAddr<InstrNode*> IA, NodeAddr<T> TA, in linkRefUp()
1590 NodeAddr<T> TAP; in linkRefUp()
1609 NodeAddr<DefNode*> RDA = *I; in linkRefUp()
1630 void DataFlowGraph::linkStmtRefs(DefStackMap &DefM, NodeAddr<StmtNode*> SA, in linkStmtRefs()
1637 for (NodeAddr<RefNode*> RA : SA.Addr->members_if(P, *this)) { in linkStmtRefs()
1662 void DataFlowGraph::linkBlockRefs(DefStackMap &DefM, NodeAddr<BlockNode*> BA) { in linkBlockRefs()
1666 auto IsClobber = [] (NodeAddr<RefNode*> RA) -> bool { in linkBlockRefs()
1669 auto IsNoClobber = [] (NodeAddr<RefNode*> RA) -> bool { in linkBlockRefs()
1677 for (NodeAddr<InstrNode*> IA : BA.Addr->members(*this)) { in linkBlockRefs()
1698 NodeAddr<BlockNode*> SBA = findBlock(SB); in linkBlockRefs()
1703 auto IsUseForBA = [BA](NodeAddr<NodeBase*> NA) -> bool { in linkBlockRefs()
1707 NodeAddr<PhiUseNode*> PUA = NA; in linkBlockRefs()
1716 NodeAddr<BlockNode*> SBA = findBlock(SB); in linkBlockRefs()
1717 for (NodeAddr<InstrNode*> IA : SBA.Addr->members_if(IsPhi, *this)) { in linkBlockRefs()
1721 NodeAddr<RefNode*> RA = IA.Addr->getFirstMember(*this); in linkBlockRefs()
1728 NodeAddr<PhiUseNode*> PUA = U; in linkBlockRefs()
1740 void DataFlowGraph::unlinkUseDF(NodeAddr<UseNode*> UA) { in unlinkUseDF()
1767 void DataFlowGraph::unlinkDefDF(NodeAddr<DefNode*> DA) { in unlinkDefDF()
1806 for (NodeAddr<RefNode*> I : ReachedDefs) in unlinkDefDF()
1808 for (NodeAddr<RefNode*> I : ReachedUses) in unlinkDefDF()
1811 for (NodeAddr<DefNode*> I : ReachedDefs) in unlinkDefDF()
1813 for (NodeAddr<UseNode*> I : ReachedUses) in unlinkDefDF()
1844 auto Last = NodeAddr<DefNode*>(ReachedDefs.back()); in unlinkDefDF()
1850 auto Last = NodeAddr<UseNode*>(ReachedUses.back()); in unlinkDefDF()