Lines Matching refs:NodeAddr

108 static void printRefHeader(raw_ostream &OS, const NodeAddr<RefNode*> RA,  in printRefHeader()
116 raw_ostream &operator<< (raw_ostream &OS, const Print<NodeAddr<DefNode*>> &P) { in operator <<()
133 raw_ostream &operator<< (raw_ostream &OS, const Print<NodeAddr<UseNode*>> &P) { in operator <<()
145 const Print<NodeAddr<PhiUseNode*>> &P) { in operator <<()
159 raw_ostream &operator<< (raw_ostream &OS, const Print<NodeAddr<RefNode*>> &P) { in operator <<()
208 for (NodeAddr<T> A : P.List) { in operator <<()
218 raw_ostream &operator<< (raw_ostream &OS, const Print<NodeAddr<PhiNode*>> &P) { in operator <<()
224 raw_ostream &operator<<(raw_ostream &OS, const Print<NodeAddr<StmtNode *>> &P) { in operator <<()
250 const Print<NodeAddr<InstrNode*>> &P) { in operator <<()
266 const Print<NodeAddr<BlockNode*>> &P) { in operator <<()
298 raw_ostream &operator<<(raw_ostream &OS, const Print<NodeAddr<FuncNode *>> &P) { in operator <<()
365 NodeAddr<NodeBase*> NodeAllocator::New() { in New()
371 NodeAddr<NodeBase*> NA = { reinterpret_cast<NodeBase*>(ActiveEnd), in New()
396 void NodeBase::append(NodeAddr<NodeBase*> NA) { in append()
434 NodeAddr<NodeBase*> RefNode::getOwner(const DataFlowGraph &G) { in getOwner()
435 NodeAddr<NodeBase*> NA = G.addr<NodeBase*>(getNext()); in getOwner()
446 void DefNode::linkToDef(NodeId Self, NodeAddr<DefNode*> DA) { in linkToDef()
453 void UseNode::linkToDef(NodeId Self, NodeAddr<DefNode*> DA) { in linkToDef()
460 NodeAddr<NodeBase*> CodeNode::getFirstMember(const DataFlowGraph &G) const { in getFirstMember()
462 return NodeAddr<NodeBase*>(); in getFirstMember()
467 NodeAddr<NodeBase*> CodeNode::getLastMember(const DataFlowGraph &G) const { in getLastMember()
469 return NodeAddr<NodeBase*>(); in getLastMember()
474 void CodeNode::addMember(NodeAddr<NodeBase*> NA, const DataFlowGraph &G) { in addMember()
475 NodeAddr<NodeBase*> ML = getLastMember(G); in addMember()
487 void CodeNode::addMemberAfter(NodeAddr<NodeBase*> MA, NodeAddr<NodeBase*> NA, in addMemberAfter()
495 void CodeNode::removeMember(NodeAddr<NodeBase*> NA, const DataFlowGraph &G) { in removeMember()
496 NodeAddr<NodeBase*> MA = getFirstMember(G); in removeMember()
528 static auto True = [] (NodeAddr<NodeBase*>) -> bool { return true; }; in members()
533 NodeAddr<NodeBase*> InstrNode::getOwner(const DataFlowGraph &G) { in getOwner()
534 NodeAddr<NodeBase*> NA = G.addr<NodeBase*>(getNext()); in getOwner()
546 void BlockNode::addPhi(NodeAddr<PhiNode*> PA, const DataFlowGraph &G) { in addPhi()
547 NodeAddr<NodeBase*> M = getFirstMember(G); in addPhi()
562 NodeAddr<NodeBase*> MN = M; in addPhi()
576 NodeAddr<BlockNode*> FuncNode::findBlock(const MachineBasicBlock *BB, in findBlock()
578 auto EqBB = [BB] (NodeAddr<NodeBase*> NA) -> bool { in findBlock()
579 return NodeAddr<BlockNode*>(NA).Addr->getCode() == BB; in findBlock()
584 return NodeAddr<BlockNode*>(); in findBlock()
588 NodeAddr<BlockNode*> FuncNode::getEntryBlock(const DataFlowGraph &G) { in getEntryBlock()
697 Stack.push_back(NodeAddr<DefNode*>(nullptr, N)); in start_block()
780 NodeAddr<NodeBase*> DataFlowGraph::newNode(uint16_t Attrs) { in newNode()
781 NodeAddr<NodeBase*> P = Memory.New(); in newNode()
789 NodeAddr<NodeBase*> DataFlowGraph::cloneNode(const NodeAddr<NodeBase*> B) { in cloneNode()
790 NodeAddr<NodeBase*> NA = newNode(0); in cloneNode()
794 NodeAddr<RefNode*> RA = NA; in cloneNode()
798 NodeAddr<DefNode*> DA = NA; in cloneNode()
808 NodeAddr<UseNode*> DataFlowGraph::newUse(NodeAddr<InstrNode*> Owner, in newUse()
810 NodeAddr<UseNode*> UA = newNode(NodeAttrs::Ref | NodeAttrs::Use | Flags); in newUse()
815 NodeAddr<PhiUseNode*> DataFlowGraph::newPhiUse(NodeAddr<PhiNode*> Owner, in newPhiUse()
816 RegisterRef RR, NodeAddr<BlockNode*> PredB, uint16_t Flags) { in newPhiUse()
817 NodeAddr<PhiUseNode*> PUA = newNode(NodeAttrs::Ref | NodeAttrs::Use | Flags); in newPhiUse()
824 NodeAddr<DefNode*> DataFlowGraph::newDef(NodeAddr<InstrNode*> Owner, in newDef()
826 NodeAddr<DefNode*> DA = newNode(NodeAttrs::Ref | NodeAttrs::Def | Flags); in newDef()
831 NodeAddr<DefNode*> DataFlowGraph::newDef(NodeAddr<InstrNode*> Owner, in newDef()
833 NodeAddr<DefNode*> DA = newNode(NodeAttrs::Ref | NodeAttrs::Def | Flags); in newDef()
839 NodeAddr<PhiNode*> DataFlowGraph::newPhi(NodeAddr<BlockNode*> Owner) { in newPhi()
840 NodeAddr<PhiNode*> PA = newNode(NodeAttrs::Code | NodeAttrs::Phi); in newPhi()
845 NodeAddr<StmtNode*> DataFlowGraph::newStmt(NodeAddr<BlockNode*> Owner, in newStmt()
847 NodeAddr<StmtNode*> SA = newNode(NodeAttrs::Code | NodeAttrs::Stmt); in newStmt()
853 NodeAddr<BlockNode*> DataFlowGraph::newBlock(NodeAddr<FuncNode*> Owner, in newBlock()
855 NodeAddr<BlockNode*> BA = newNode(NodeAttrs::Code | NodeAttrs::Block); in newBlock()
861 NodeAddr<FuncNode*> DataFlowGraph::newFunc(MachineFunction *MF) { in newFunc()
862 NodeAddr<FuncNode*> FA = newNode(NodeAttrs::Code | NodeAttrs::Func); in newFunc()
876 NodeAddr<BlockNode*> BA = newBlock(Func, &B); in build()
885 NodeAddr<BlockNode*> EA = Func.Addr->getEntryBlock(*this); in build()
890 for (NodeAddr<BlockNode*> BA : Blocks) in build()
891 for (NodeAddr<InstrNode*> IA : BA.Addr->members(*this)) in build()
892 for (NodeAddr<RefNode*> RA : IA.Addr->members(*this)) in build()
910 NodeAddr<PhiNode*> PA = newPhi(EA); in build()
912 NodeAddr<DefNode*> DA = newDef(PA, RR, PhiFlags); in build()
923 for (NodeAddr<BlockNode*> BA : Blocks) { in build()
935 NodeAddr<PhiNode*> PA = newPhi(BA); in build()
938 NodeAddr<DefNode*> DA = newDef(PA, RR, PhiFlags); in build()
941 for (NodeAddr<BlockNode*> PBA : Preds) { in build()
942 NodeAddr<PhiUseNode*> PUA = newPhiUse(PA, RR, PBA); in build()
952 for (NodeAddr<BlockNode*> BA : Blocks) in build()
954 for (NodeAddr<BlockNode*> BA : Blocks) in build()
1020 void DataFlowGraph::pushAllDefs(NodeAddr<InstrNode*> IA, DefStackMap &DefM) { in pushAllDefs()
1027 void DataFlowGraph::pushClobbers(NodeAddr<InstrNode*> IA, DefStackMap &DefM) { in pushClobbers()
1043 for (NodeAddr<DefNode*> DA : IA.Addr->members_if(IsDef, *this)) { in pushClobbers()
1050 NodeAddr<DefNode*> PDA = Rel.front(); in pushClobbers()
1064 for (NodeAddr<NodeBase*> T : Rel) in pushClobbers()
1071 void DataFlowGraph::pushDefs(NodeAddr<InstrNode*> IA, DefStackMap &DefM) { in pushDefs()
1089 for (NodeAddr<DefNode*> DA : IA.Addr->members_if(IsDef, *this)) { in pushDefs()
1096 NodeAddr<DefNode*> PDA = Rel.front(); in pushDefs()
1102 MachineInstr *MI = NodeAddr<StmtNode*>(IA).Addr->getCode(); in pushDefs()
1118 for (NodeAddr<NodeBase*> T : Rel) in pushDefs()
1125 NodeList DataFlowGraph::getRelatedRefs(NodeAddr<InstrNode*> IA, in getRelatedRefs()
1126 NodeAddr<RefNode*> RA) const { in getRelatedRefs()
1142 Func = NodeAddr<FuncNode*>(); in reset()
1151 NodeAddr<RefNode*> DataFlowGraph::getNextRelated(NodeAddr<InstrNode*> IA, in getNextRelated()
1152 NodeAddr<RefNode*> RA) const { in getNextRelated()
1155 auto Related = [this,RA](NodeAddr<RefNode*> TA) -> bool { in getNextRelated()
1162 auto RelatedStmt = [&Related,RA](NodeAddr<RefNode*> TA) -> bool { in getNextRelated()
1166 auto RelatedPhi = [&Related,RA](NodeAddr<RefNode*> TA) -> bool { in getNextRelated()
1172 const NodeAddr<const PhiUseNode*> TUA = TA; in getNextRelated()
1173 const NodeAddr<const PhiUseNode*> RUA = RA; in getNextRelated()
1189 std::pair<NodeAddr<RefNode*>,NodeAddr<RefNode*>>
1190 DataFlowGraph::locateNextRef(NodeAddr<InstrNode*> IA, NodeAddr<RefNode*> RA, in locateNextRef()
1194 NodeAddr<RefNode*> NA; in locateNextRef()
1207 return std::make_pair(RA, NodeAddr<RefNode*>()); in locateNextRef()
1212 NodeAddr<RefNode*> DataFlowGraph::getNextShadow(NodeAddr<InstrNode*> IA, in getNextShadow()
1213 NodeAddr<RefNode*> RA, bool Create) { in getNextShadow()
1217 auto IsShadow = [Flags] (NodeAddr<RefNode*> TA) -> bool { in getNextShadow()
1225 NodeAddr<RefNode*> NA = cloneNode(RA); in getNextShadow()
1233 NodeAddr<RefNode*> DataFlowGraph::getNextShadow(NodeAddr<InstrNode*> IA, in getNextShadow()
1234 NodeAddr<RefNode*> RA) const { in getNextShadow()
1237 auto IsShadow = [Flags] (NodeAddr<RefNode*> TA) -> bool { in getNextShadow()
1245 void DataFlowGraph::buildStmt(NodeAddr<BlockNode*> BA, MachineInstr &In) { in buildStmt()
1246 NodeAddr<StmtNode*> SA = newStmt(BA, &In); in buildStmt()
1307 NodeAddr<DefNode*> DA = newDef(SA, Op, Flags); in buildStmt()
1321 NodeAddr<DefNode*> DA = newDef(SA, Op, Flags); in buildStmt()
1356 NodeAddr<DefNode*> DA = newDef(SA, Op, Flags); in buildStmt()
1373 NodeAddr<UseNode*> UA = newUse(SA, Op, Flags); in buildStmt()
1381 NodeAddr<BlockNode*> BA) { in recordDefsForDF()
1397 for (NodeAddr<InstrNode*> IA : BA.Addr->members(*this)) in recordDefsForDF()
1398 for (NodeAddr<RefNode*> RA : IA.Addr->members_if(IsDef, *this)) in recordDefsForDF()
1413 NodeAddr<BlockNode*> DBA = findBlock(DB); in recordDefsForDF()
1421 NodeAddr<BlockNode*> BA) { in buildPhis()
1483 NodeAddr<PhiNode*> PA = newPhi(BA); in buildPhis()
1489 NodeAddr<DefNode*> DA = newDef(PA, RR, PhiFlags); in buildPhis()
1493 for (NodeAddr<BlockNode*> PBA : Preds) { in buildPhis()
1496 NodeAddr<PhiUseNode*> PUA = newPhiUse(PA, RR, PBA); in buildPhis()
1517 for (NodeAddr<BlockNode*> BA : Func.Addr->members(*this)) { in removeUnusedPhis()
1523 for (NodeAddr<NodeBase*> M : Ms) { in removeUnusedPhis()
1526 NodeAddr<DefNode*> DA = M; in removeUnusedPhis()
1542 for (NodeAddr<RefNode*> RA : Refs) { in removeUnusedPhis()
1545 NodeAddr<InstrNode*> OA = RDA.Addr->getOwner(*this); in removeUnusedPhis()
1554 NodeAddr<BlockNode*> BA = PA.Addr->getOwner(*this); in removeUnusedPhis()
1563 void DataFlowGraph::linkRefUp(NodeAddr<InstrNode*> IA, NodeAddr<T> TA, in linkRefUp()
1568 NodeAddr<T> TAP; in linkRefUp()
1587 NodeAddr<DefNode*> RDA = *I; in linkRefUp()
1608 void DataFlowGraph::linkStmtRefs(DefStackMap &DefM, NodeAddr<StmtNode*> SA, in linkStmtRefs()
1615 for (NodeAddr<RefNode*> RA : SA.Addr->members_if(P, *this)) { in linkStmtRefs()
1640 void DataFlowGraph::linkBlockRefs(DefStackMap &DefM, NodeAddr<BlockNode*> BA) { in linkBlockRefs()
1644 auto IsClobber = [] (NodeAddr<RefNode*> RA) -> bool { in linkBlockRefs()
1647 auto IsNoClobber = [] (NodeAddr<RefNode*> RA) -> bool { in linkBlockRefs()
1655 for (NodeAddr<InstrNode*> IA : BA.Addr->members(*this)) { in linkBlockRefs()
1676 NodeAddr<BlockNode*> SBA = findBlock(SB); in linkBlockRefs()
1681 auto IsUseForBA = [BA](NodeAddr<NodeBase*> NA) -> bool { in linkBlockRefs()
1685 NodeAddr<PhiUseNode*> PUA = NA; in linkBlockRefs()
1694 NodeAddr<BlockNode*> SBA = findBlock(SB); in linkBlockRefs()
1695 for (NodeAddr<InstrNode*> IA : SBA.Addr->members_if(IsPhi, *this)) { in linkBlockRefs()
1699 NodeAddr<RefNode*> RA = IA.Addr->getFirstMember(*this); in linkBlockRefs()
1706 NodeAddr<PhiUseNode*> PUA = U; in linkBlockRefs()
1718 void DataFlowGraph::unlinkUseDF(NodeAddr<UseNode*> UA) { in unlinkUseDF()
1745 void DataFlowGraph::unlinkDefDF(NodeAddr<DefNode*> DA) { in unlinkDefDF()
1784 for (NodeAddr<RefNode*> I : ReachedDefs) in unlinkDefDF()
1786 for (NodeAddr<RefNode*> I : ReachedUses) in unlinkDefDF()
1789 for (NodeAddr<DefNode*> I : ReachedDefs) in unlinkDefDF()
1791 for (NodeAddr<UseNode*> I : ReachedUses) in unlinkDefDF()
1822 auto Last = NodeAddr<DefNode*>(ReachedDefs.back()); in unlinkDefDF()
1828 auto Last = NodeAddr<UseNode*>(ReachedUses.back()); in unlinkDefDF()