Lines Matching refs:NodeAddr

106 static void printRefHeader(raw_ostream &OS, const NodeAddr<RefNode*> RA,  in printRefHeader()
114 raw_ostream &operator<< (raw_ostream &OS, const Print<NodeAddr<DefNode*>> &P) { in operator <<()
131 raw_ostream &operator<< (raw_ostream &OS, const Print<NodeAddr<UseNode*>> &P) { in operator <<()
143 const Print<NodeAddr<PhiUseNode*>> &P) { in operator <<()
157 raw_ostream &operator<< (raw_ostream &OS, const Print<NodeAddr<RefNode*>> &P) { in operator <<()
206 for (NodeAddr<T> A : P.List) { in operator <<()
216 raw_ostream &operator<< (raw_ostream &OS, const Print<NodeAddr<PhiNode*>> &P) { in operator <<()
222 raw_ostream &operator<<(raw_ostream &OS, const Print<NodeAddr<StmtNode *>> &P) { in operator <<()
248 const Print<NodeAddr<InstrNode*>> &P) { in operator <<()
264 const Print<NodeAddr<BlockNode*>> &P) { in operator <<()
296 raw_ostream &operator<<(raw_ostream &OS, const Print<NodeAddr<FuncNode *>> &P) { in operator <<()
363 NodeAddr<NodeBase*> NodeAllocator::New() { in New()
369 NodeAddr<NodeBase*> NA = { reinterpret_cast<NodeBase*>(ActiveEnd), in New()
394 void NodeBase::append(NodeAddr<NodeBase*> NA) { in append()
432 NodeAddr<NodeBase*> RefNode::getOwner(const DataFlowGraph &G) { in getOwner()
433 NodeAddr<NodeBase*> NA = G.addr<NodeBase*>(getNext()); in getOwner()
444 void DefNode::linkToDef(NodeId Self, NodeAddr<DefNode*> DA) { in linkToDef()
451 void UseNode::linkToDef(NodeId Self, NodeAddr<DefNode*> DA) { in linkToDef()
458 NodeAddr<NodeBase*> CodeNode::getFirstMember(const DataFlowGraph &G) const { in getFirstMember()
460 return NodeAddr<NodeBase*>(); in getFirstMember()
465 NodeAddr<NodeBase*> CodeNode::getLastMember(const DataFlowGraph &G) const { in getLastMember()
467 return NodeAddr<NodeBase*>(); in getLastMember()
472 void CodeNode::addMember(NodeAddr<NodeBase*> NA, const DataFlowGraph &G) { in addMember()
473 NodeAddr<NodeBase*> ML = getLastMember(G); in addMember()
485 void CodeNode::addMemberAfter(NodeAddr<NodeBase*> MA, NodeAddr<NodeBase*> NA, in addMemberAfter()
493 void CodeNode::removeMember(NodeAddr<NodeBase*> NA, const DataFlowGraph &G) { in removeMember()
494 NodeAddr<NodeBase*> MA = getFirstMember(G); in removeMember()
526 static auto True = [] (NodeAddr<NodeBase*>) -> bool { return true; }; in members()
531 NodeAddr<NodeBase*> InstrNode::getOwner(const DataFlowGraph &G) { in getOwner()
532 NodeAddr<NodeBase*> NA = G.addr<NodeBase*>(getNext()); in getOwner()
544 void BlockNode::addPhi(NodeAddr<PhiNode*> PA, const DataFlowGraph &G) { in addPhi()
545 NodeAddr<NodeBase*> M = getFirstMember(G); in addPhi()
560 NodeAddr<NodeBase*> MN = M; in addPhi()
574 NodeAddr<BlockNode*> FuncNode::findBlock(const MachineBasicBlock *BB, in findBlock()
576 auto EqBB = [BB] (NodeAddr<NodeBase*> NA) -> bool { in findBlock()
577 return NodeAddr<BlockNode*>(NA).Addr->getCode() == BB; in findBlock()
582 return NodeAddr<BlockNode*>(); in findBlock()
586 NodeAddr<BlockNode*> FuncNode::getEntryBlock(const DataFlowGraph &G) { in getEntryBlock()
695 Stack.push_back(NodeAddr<DefNode*>(nullptr, N)); in start_block()
778 NodeAddr<NodeBase*> DataFlowGraph::newNode(uint16_t Attrs) { in newNode()
779 NodeAddr<NodeBase*> P = Memory.New(); in newNode()
787 NodeAddr<NodeBase*> DataFlowGraph::cloneNode(const NodeAddr<NodeBase*> B) { in cloneNode()
788 NodeAddr<NodeBase*> NA = newNode(0); in cloneNode()
792 NodeAddr<RefNode*> RA = NA; in cloneNode()
796 NodeAddr<DefNode*> DA = NA; in cloneNode()
806 NodeAddr<UseNode*> DataFlowGraph::newUse(NodeAddr<InstrNode*> Owner, in newUse()
808 NodeAddr<UseNode*> UA = newNode(NodeAttrs::Ref | NodeAttrs::Use | Flags); in newUse()
813 NodeAddr<PhiUseNode*> DataFlowGraph::newPhiUse(NodeAddr<PhiNode*> Owner, in newPhiUse()
814 RegisterRef RR, NodeAddr<BlockNode*> PredB, uint16_t Flags) { in newPhiUse()
815 NodeAddr<PhiUseNode*> PUA = newNode(NodeAttrs::Ref | NodeAttrs::Use | Flags); in newPhiUse()
822 NodeAddr<DefNode*> DataFlowGraph::newDef(NodeAddr<InstrNode*> Owner, in newDef()
824 NodeAddr<DefNode*> DA = newNode(NodeAttrs::Ref | NodeAttrs::Def | Flags); in newDef()
829 NodeAddr<DefNode*> DataFlowGraph::newDef(NodeAddr<InstrNode*> Owner, in newDef()
831 NodeAddr<DefNode*> DA = newNode(NodeAttrs::Ref | NodeAttrs::Def | Flags); in newDef()
837 NodeAddr<PhiNode*> DataFlowGraph::newPhi(NodeAddr<BlockNode*> Owner) { in newPhi()
838 NodeAddr<PhiNode*> PA = newNode(NodeAttrs::Code | NodeAttrs::Phi); in newPhi()
843 NodeAddr<StmtNode*> DataFlowGraph::newStmt(NodeAddr<BlockNode*> Owner, in newStmt()
845 NodeAddr<StmtNode*> SA = newNode(NodeAttrs::Code | NodeAttrs::Stmt); in newStmt()
851 NodeAddr<BlockNode*> DataFlowGraph::newBlock(NodeAddr<FuncNode*> Owner, in newBlock()
853 NodeAddr<BlockNode*> BA = newNode(NodeAttrs::Code | NodeAttrs::Block); in newBlock()
859 NodeAddr<FuncNode*> DataFlowGraph::newFunc(MachineFunction *MF) { in newFunc()
860 NodeAddr<FuncNode*> FA = newNode(NodeAttrs::Code | NodeAttrs::Func); in newFunc()
874 NodeAddr<BlockNode*> BA = newBlock(Func, &B); in build()
883 NodeAddr<BlockNode*> EA = Func.Addr->getEntryBlock(*this); in build()
888 for (NodeAddr<BlockNode*> BA : Blocks) in build()
889 for (NodeAddr<InstrNode*> IA : BA.Addr->members(*this)) in build()
890 for (NodeAddr<RefNode*> RA : IA.Addr->members(*this)) in build()
908 NodeAddr<PhiNode*> PA = newPhi(EA); in build()
910 NodeAddr<DefNode*> DA = newDef(PA, RR, PhiFlags); in build()
921 for (NodeAddr<BlockNode*> BA : Blocks) { in build()
933 NodeAddr<PhiNode*> PA = newPhi(BA); in build()
936 NodeAddr<DefNode*> DA = newDef(PA, RR, PhiFlags); in build()
939 for (NodeAddr<BlockNode*> PBA : Preds) { in build()
940 NodeAddr<PhiUseNode*> PUA = newPhiUse(PA, RR, PBA); in build()
950 for (NodeAddr<BlockNode*> BA : Blocks) in build()
952 for (NodeAddr<BlockNode*> BA : Blocks) in build()
1006 void DataFlowGraph::pushAllDefs(NodeAddr<InstrNode*> IA, DefStackMap &DefM) { in pushAllDefs()
1013 void DataFlowGraph::pushClobbers(NodeAddr<InstrNode*> IA, DefStackMap &DefM) { in pushClobbers()
1029 for (NodeAddr<DefNode*> DA : IA.Addr->members_if(IsDef, *this)) { in pushClobbers()
1036 NodeAddr<DefNode*> PDA = Rel.front(); in pushClobbers()
1050 for (NodeAddr<NodeBase*> T : Rel) in pushClobbers()
1057 void DataFlowGraph::pushDefs(NodeAddr<InstrNode*> IA, DefStackMap &DefM) { in pushDefs()
1075 for (NodeAddr<DefNode*> DA : IA.Addr->members_if(IsDef, *this)) { in pushDefs()
1082 NodeAddr<DefNode*> PDA = Rel.front(); in pushDefs()
1088 MachineInstr *MI = NodeAddr<StmtNode*>(IA).Addr->getCode(); in pushDefs()
1104 for (NodeAddr<NodeBase*> T : Rel) in pushDefs()
1111 NodeList DataFlowGraph::getRelatedRefs(NodeAddr<InstrNode*> IA, in getRelatedRefs()
1112 NodeAddr<RefNode*> RA) const { in getRelatedRefs()
1128 Func = NodeAddr<FuncNode*>(); in reset()
1137 NodeAddr<RefNode*> DataFlowGraph::getNextRelated(NodeAddr<InstrNode*> IA, in getNextRelated()
1138 NodeAddr<RefNode*> RA) const { in getNextRelated()
1141 auto Related = [this,RA](NodeAddr<RefNode*> TA) -> bool { in getNextRelated()
1148 auto RelatedStmt = [&Related,RA](NodeAddr<RefNode*> TA) -> bool { in getNextRelated()
1152 auto RelatedPhi = [&Related,RA](NodeAddr<RefNode*> TA) -> bool { in getNextRelated()
1158 const NodeAddr<const PhiUseNode*> TUA = TA; in getNextRelated()
1159 const NodeAddr<const PhiUseNode*> RUA = RA; in getNextRelated()
1175 std::pair<NodeAddr<RefNode*>,NodeAddr<RefNode*>>
1176 DataFlowGraph::locateNextRef(NodeAddr<InstrNode*> IA, NodeAddr<RefNode*> RA, in locateNextRef()
1180 NodeAddr<RefNode*> NA; in locateNextRef()
1193 return std::make_pair(RA, NodeAddr<RefNode*>()); in locateNextRef()
1198 NodeAddr<RefNode*> DataFlowGraph::getNextShadow(NodeAddr<InstrNode*> IA, in getNextShadow()
1199 NodeAddr<RefNode*> RA, bool Create) { in getNextShadow()
1203 auto IsShadow = [Flags] (NodeAddr<RefNode*> TA) -> bool { in getNextShadow()
1211 NodeAddr<RefNode*> NA = cloneNode(RA); in getNextShadow()
1219 NodeAddr<RefNode*> DataFlowGraph::getNextShadow(NodeAddr<InstrNode*> IA, in getNextShadow()
1220 NodeAddr<RefNode*> RA) const { in getNextShadow()
1223 auto IsShadow = [Flags] (NodeAddr<RefNode*> TA) -> bool { in getNextShadow()
1231 void DataFlowGraph::buildStmt(NodeAddr<BlockNode*> BA, MachineInstr &In) { in buildStmt()
1232 NodeAddr<StmtNode*> SA = newStmt(BA, &In); in buildStmt()
1293 NodeAddr<DefNode*> DA = newDef(SA, Op, Flags); in buildStmt()
1307 NodeAddr<DefNode*> DA = newDef(SA, Op, Flags); in buildStmt()
1342 NodeAddr<DefNode*> DA = newDef(SA, Op, Flags); in buildStmt()
1359 NodeAddr<UseNode*> UA = newUse(SA, Op, Flags); in buildStmt()
1367 NodeAddr<BlockNode*> BA) { in recordDefsForDF()
1383 for (NodeAddr<InstrNode*> IA : BA.Addr->members(*this)) in recordDefsForDF()
1384 for (NodeAddr<RefNode*> RA : IA.Addr->members_if(IsDef, *this)) in recordDefsForDF()
1399 NodeAddr<BlockNode*> DBA = findBlock(DB); in recordDefsForDF()
1407 NodeAddr<BlockNode*> BA) { in buildPhis()
1469 NodeAddr<PhiNode*> PA = newPhi(BA); in buildPhis()
1475 NodeAddr<DefNode*> DA = newDef(PA, RR, PhiFlags); in buildPhis()
1479 for (NodeAddr<BlockNode*> PBA : Preds) { in buildPhis()
1482 NodeAddr<PhiUseNode*> PUA = newPhiUse(PA, RR, PBA); in buildPhis()
1503 for (NodeAddr<BlockNode*> BA : Func.Addr->members(*this)) { in removeUnusedPhis()
1509 for (NodeAddr<NodeBase*> M : Ms) { in removeUnusedPhis()
1512 NodeAddr<DefNode*> DA = M; in removeUnusedPhis()
1528 for (NodeAddr<RefNode*> RA : Refs) { in removeUnusedPhis()
1531 NodeAddr<InstrNode*> OA = RDA.Addr->getOwner(*this); in removeUnusedPhis()
1540 NodeAddr<BlockNode*> BA = PA.Addr->getOwner(*this); in removeUnusedPhis()
1549 void DataFlowGraph::linkRefUp(NodeAddr<InstrNode*> IA, NodeAddr<T> TA, in linkRefUp()
1554 NodeAddr<T> TAP; in linkRefUp()
1573 NodeAddr<DefNode*> RDA = *I; in linkRefUp()
1594 void DataFlowGraph::linkStmtRefs(DefStackMap &DefM, NodeAddr<StmtNode*> SA, in linkStmtRefs()
1601 for (NodeAddr<RefNode*> RA : SA.Addr->members_if(P, *this)) { in linkStmtRefs()
1626 void DataFlowGraph::linkBlockRefs(DefStackMap &DefM, NodeAddr<BlockNode*> BA) { in linkBlockRefs()
1630 auto IsClobber = [] (NodeAddr<RefNode*> RA) -> bool { in linkBlockRefs()
1633 auto IsNoClobber = [] (NodeAddr<RefNode*> RA) -> bool { in linkBlockRefs()
1641 for (NodeAddr<InstrNode*> IA : BA.Addr->members(*this)) { in linkBlockRefs()
1662 NodeAddr<BlockNode*> SBA = findBlock(SB); in linkBlockRefs()
1667 auto IsUseForBA = [BA](NodeAddr<NodeBase*> NA) -> bool { in linkBlockRefs()
1671 NodeAddr<PhiUseNode*> PUA = NA; in linkBlockRefs()
1680 NodeAddr<BlockNode*> SBA = findBlock(SB); in linkBlockRefs()
1681 for (NodeAddr<InstrNode*> IA : SBA.Addr->members_if(IsPhi, *this)) { in linkBlockRefs()
1685 NodeAddr<RefNode*> RA = IA.Addr->getFirstMember(*this); in linkBlockRefs()
1692 NodeAddr<PhiUseNode*> PUA = U; in linkBlockRefs()
1704 void DataFlowGraph::unlinkUseDF(NodeAddr<UseNode*> UA) { in unlinkUseDF()
1731 void DataFlowGraph::unlinkDefDF(NodeAddr<DefNode*> DA) { in unlinkDefDF()
1770 for (NodeAddr<RefNode*> I : ReachedDefs) in unlinkDefDF()
1772 for (NodeAddr<RefNode*> I : ReachedUses) in unlinkDefDF()
1775 for (NodeAddr<DefNode*> I : ReachedDefs) in unlinkDefDF()
1777 for (NodeAddr<UseNode*> I : ReachedUses) in unlinkDefDF()
1808 auto Last = NodeAddr<DefNode*>(ReachedDefs.back()); in unlinkDefDF()
1814 auto Last = NodeAddr<UseNode*>(ReachedUses.back()); in unlinkDefDF()