Lines Matching refs:Addr
67 uint16_t Attrs = NA.Addr->getAttrs(); in operator <<()
109 << Print<RegisterRef>(RA.Addr->getRegRef(G), G) << '>'; in printRefHeader()
110 if (RA.Addr->getFlags() & NodeAttrs::Fixed) in printRefHeader()
117 if (NodeId N = P.Obj.Addr->getReachingDef()) in operator <<()
120 if (NodeId N = P.Obj.Addr->getReachedDef()) in operator <<()
123 if (NodeId N = P.Obj.Addr->getReachedUse()) in operator <<()
126 if (NodeId N = P.Obj.Addr->getSibling()) in operator <<()
134 if (NodeId N = P.Obj.Addr->getReachingDef()) in operator <<()
137 if (NodeId N = P.Obj.Addr->getSibling()) in operator <<()
146 if (NodeId N = P.Obj.Addr->getReachingDef()) in operator <<()
149 if (NodeId N = P.Obj.Addr->getPredecessor()) in operator <<()
152 if (NodeId N = P.Obj.Addr->getSibling()) in operator <<()
158 switch (P.Obj.Addr->getKind()) { in operator <<()
163 if (P.Obj.Addr->getFlags() & NodeAttrs::PhiRef) in operator <<()
218 << PrintListV<RefNode*>(P.Obj.Addr->members(P.G), P.G) << ']'; in operator <<()
223 const MachineInstr &MI = *P.Obj.Addr->getCode(); in operator <<()
243 OS << " [" << PrintListV<RefNode*>(P.Obj.Addr->members(P.G), P.G) << ']'; in operator <<()
249 switch (P.Obj.Addr->getKind()) { in operator <<()
265 MachineBasicBlock *BB = P.Obj.Addr->getCode(); in operator <<()
291 for (auto I : P.Obj.Addr->members(P.G)) in operator <<()
298 << P.Obj.Addr->getCode()->getName() << '\n'; in operator <<()
299 for (auto I : P.Obj.Addr->members(P.G)) in operator <<()
322 << '<' << Print<RegisterRef>(I->Addr->getRegRef(P.G), P.G) << '>'; in operator <<()
399 NA.Addr->Next = Nx; in append()
435 while (NA.Addr != this) { in getOwner()
436 if (NA.Addr->getType() == NodeAttrs::Code) in getOwner()
438 NA = G.addr<NodeBase*>(NA.Addr->getNext()); in getOwner()
446 Ref.Sib = DA.Addr->getReachedDef(); in linkToDef()
447 DA.Addr->setReachedDef(Self); in linkToDef()
453 Ref.Sib = DA.Addr->getReachedUse(); in linkToDef()
454 DA.Addr->setReachedUse(Self); in linkToDef()
475 ML.Addr->append(NA); in addMember()
479 NA.Addr->setNext(Self); in addMember()
487 MA.Addr->append(NA); in addMemberAfter()
504 Code.FirstM = MA.Addr->getNext(); in removeMember()
509 while (MA.Addr != this) { in removeMember()
510 NodeId MX = MA.Addr->getNext(); in removeMember()
512 MA.Addr->setNext(NA.Addr->getNext()); in removeMember()
534 while (NA.Addr != this) { in getOwner()
535 assert(NA.Addr->getType() == NodeAttrs::Code); in getOwner()
536 if (NA.Addr->getKind() == NodeAttrs::Block) in getOwner()
538 NA = G.addr<NodeBase*>(NA.Addr->getNext()); in getOwner()
551 assert(M.Addr->getType() == NodeAttrs::Code); in addPhi()
552 if (M.Addr->getKind() == NodeAttrs::Stmt) { in addPhi()
556 PA.Addr->setNext(M.Id); in addPhi()
559 assert(M.Addr->getKind() == NodeAttrs::Phi); in addPhi()
563 MN = G.addr<NodeBase*>(M.Addr->getNext()); in addPhi()
564 assert(MN.Addr->getType() == NodeAttrs::Code); in addPhi()
565 } while (MN.Addr->getKind() == NodeAttrs::Phi); in addPhi()
577 return NodeAddr<BlockNode*>(NA).Addr->getCode() == BB; in findBlock()
780 P.Addr->init(); in newNode()
781 P.Addr->setAttrs(Attrs); in newNode()
789 memcpy(NA.Addr, B.Addr, sizeof(NodeBase)); in cloneNode()
791 if (NA.Addr->getType() == NodeAttrs::Ref) { in cloneNode()
793 RA.Addr->setReachingDef(0); in cloneNode()
794 RA.Addr->setSibling(0); in cloneNode()
795 if (NA.Addr->getKind() == NodeAttrs::Def) { in cloneNode()
797 DA.Addr->setReachedDef(0); in cloneNode()
798 DA.Addr->setReachedUse(0); in cloneNode()
809 UA.Addr->setRegRef(&Op, *this); in newUse()
817 PUA.Addr->setRegRef(RR, *this); in newPhiUse()
818 PUA.Addr->setPredecessor(PredB.Id); in newPhiUse()
825 DA.Addr->setRegRef(&Op, *this); in newDef()
833 DA.Addr->setRegRef(RR, *this); in newDef()
839 Owner.Addr->addPhi(PA, *this); in newPhi()
846 SA.Addr->setCode(MI); in newStmt()
847 Owner.Addr->addMember(SA, *this); in newStmt()
854 BA.Addr->setCode(BB); in newBlock()
855 Owner.Addr->addMember(BA, *this); in newBlock()
861 FA.Addr->setCode(MF); in newFunc()
883 NodeAddr<BlockNode*> EA = Func.Addr->getEntryBlock(*this); in build()
884 NodeList Blocks = Func.Addr->members(*this); in build()
889 for (NodeAddr<InstrNode*> IA : BA.Addr->members(*this)) in build()
890 for (NodeAddr<RefNode*> RA : IA.Addr->members(*this)) in build()
891 AllRefs.insert(RA.Addr->getRegRef(*this)); in build()
895 MachineBasicBlock &EntryB = *EA.Addr->getCode(); in build()
911 PA.Addr->addMember(DA, *this); in build()
922 const MachineBasicBlock &B = *BA.Addr->getCode(); in build()
937 PA.Addr->addMember(DA, *this); in build()
941 PA.Addr->addMember(PUA, *this); in build()
1029 for (NodeAddr<DefNode*> DA : IA.Addr->members_if(IsDef, *this)) { in pushClobbers()
1032 if (!(DA.Addr->getFlags() & NodeAttrs::Clobbering)) in pushClobbers()
1037 RegisterRef RR = PDA.Addr->getRegRef(*this); in pushClobbers()
1075 for (NodeAddr<DefNode*> DA : IA.Addr->members_if(IsDef, *this)) { in pushDefs()
1078 if (DA.Addr->getFlags() & NodeAttrs::Clobbering) in pushDefs()
1083 RegisterRef RR = PDA.Addr->getRegRef(*this); in pushDefs()
1088 MachineInstr *MI = NodeAddr<StmtNode*>(IA).Addr->getCode(); in pushDefs()
1142 if (TA.Addr->getKind() != RA.Addr->getKind()) in getNextRelated()
1144 if (TA.Addr->getRegRef(*this) != RA.Addr->getRegRef(*this)) in getNextRelated()
1150 &RA.Addr->getOp() == &TA.Addr->getOp(); in getNextRelated()
1155 if (TA.Addr->getKind() != NodeAttrs::Use) in getNextRelated()
1160 return TUA.Addr->getPredecessor() == RUA.Addr->getPredecessor(); in getNextRelated()
1163 RegisterRef RR = RA.Addr->getRegRef(*this); in getNextRelated()
1164 if (IA.Addr->getKind() == NodeAttrs::Stmt) in getNextRelated()
1165 return RA.Addr->getNextRef(RR, RelatedStmt, true, *this); in getNextRelated()
1166 return RA.Addr->getNextRef(RR, RelatedPhi, true, *this); in getNextRelated()
1202 uint16_t Flags = RA.Addr->getFlags() | NodeAttrs::Shadow; in getNextShadow()
1204 return TA.Addr->getFlags() == Flags; in getNextShadow()
1212 NA.Addr->setFlags(Flags | NodeAttrs::Shadow); in getNextShadow()
1213 IA.Addr->addMemberAfter(Loc.first, NA, *this); in getNextShadow()
1222 uint16_t Flags = RA.Addr->getFlags() | NodeAttrs::Shadow; in getNextShadow()
1224 return TA.Addr->getFlags() == Flags; in getNextShadow()
1294 SA.Addr->addMember(DA, *this); in buildStmt()
1308 SA.Addr->addMember(DA, *this); in buildStmt()
1343 SA.Addr->addMember(DA, *this); in buildStmt()
1360 SA.Addr->addMember(UA, *this); in buildStmt()
1371 MachineBasicBlock *BB = BA.Addr->getCode(); 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()
1385 Defs.insert(RA.Addr->getRegRef(*this)); in recordDefsForDF()
1453 const MachineBasicBlock *MBB = BA.Addr->getCode(); in buildPhis()
1476 PA.Addr->addMember(DA, *this); in buildPhis()
1483 PA.Addr->addMember(PUA, *this); in buildPhis()
1503 for (NodeAddr<BlockNode*> BA : Func.Addr->members(*this)) { in removeUnusedPhis()
1504 for (auto P : BA.Addr->members_if(IsPhi, *this)) in removeUnusedPhis()
1510 if (M.Addr->getKind() != NodeAttrs::Def) in removeUnusedPhis()
1513 if (DA.Addr->getReachedDef() != 0 || DA.Addr->getReachedUse() != 0) in removeUnusedPhis()
1525 NodeList Refs = PA.Addr->members(*this); in removeUnusedPhis()
1529 if (NodeId RD = RA.Addr->getReachingDef()) { in removeUnusedPhis()
1531 NodeAddr<InstrNode*> OA = RDA.Addr->getOwner(*this); in removeUnusedPhis()
1535 if (RA.Addr->isDef()) in removeUnusedPhis()
1540 NodeAddr<BlockNode*> BA = PA.Addr->getOwner(*this); in removeUnusedPhis()
1541 BA.Addr->removeMember(PA, *this); in removeUnusedPhis()
1553 RegisterRef RR = TA.Addr->getRegRef(*this); in linkRefUp()
1560 RegisterRef QR = I->Addr->getRegRef(*this); in linkRefUp()
1580 TAP.Addr->setFlags(TAP.Addr->getFlags() | NodeAttrs::Shadow); in linkRefUp()
1585 TAP.Addr->linkToDef(TAP.Id, RDA); in linkRefUp()
1601 for (NodeAddr<RefNode*> RA : SA.Addr->members_if(P, *this)) { in linkStmtRefs()
1602 uint16_t Kind = RA.Addr->getKind(); in linkStmtRefs()
1604 RegisterRef RR = RA.Addr->getRegRef(*this); in linkStmtRefs()
1631 return IsDef(RA) && (RA.Addr->getFlags() & NodeAttrs::Clobbering); in linkBlockRefs()
1634 return IsDef(RA) && !(RA.Addr->getFlags() & NodeAttrs::Clobbering); in linkBlockRefs()
1637 assert(BA.Addr && "block node address is needed to create a data-flow link"); in linkBlockRefs()
1641 for (NodeAddr<InstrNode*> IA : BA.Addr->members(*this)) { in linkBlockRefs()
1644 if (IA.Addr->getKind() == NodeAttrs::Stmt) { in linkBlockRefs()
1652 if (IA.Addr->getKind() == NodeAttrs::Stmt) in linkBlockRefs()
1659 MachineDomTreeNode *N = MDT.getNode(BA.Addr->getCode()); in linkBlockRefs()
1668 if (NA.Addr->getKind() != NodeAttrs::Use) in linkBlockRefs()
1670 assert(NA.Addr->getFlags() & NodeAttrs::PhiRef); in linkBlockRefs()
1672 return PUA.Addr->getPredecessor() == BA.Id; in linkBlockRefs()
1676 MachineBasicBlock *MBB = BA.Addr->getCode(); 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()
1687 if (EHLiveIns.count(RA.Addr->getRegRef(*this))) in linkBlockRefs()
1691 for (auto U : IA.Addr->members_if(IsUseForBA, *this)) { in linkBlockRefs()
1693 RegisterRef RR = PUA.Addr->getRegRef(*this); in linkBlockRefs()
1705 NodeId RD = UA.Addr->getReachingDef(); in unlinkUseDF()
1706 NodeId Sib = UA.Addr->getSibling(); in unlinkUseDF()
1714 auto TA = addr<UseNode*>(RDA.Addr->getReachedUse()); in unlinkUseDF()
1716 RDA.Addr->setReachedUse(Sib); in unlinkUseDF()
1721 NodeId S = TA.Addr->getSibling(); in unlinkUseDF()
1723 TA.Addr->setSibling(UA.Addr->getSibling()); in unlinkUseDF()
1750 NodeId RD = DA.Addr->getReachingDef(); in unlinkDefDF()
1762 N = RA.Addr->getSibling(); in unlinkDefDF()
1766 NodeList ReachedDefs = getAllNodes(DA.Addr->getReachedDef()); in unlinkDefDF()
1767 NodeList ReachedUses = getAllNodes(DA.Addr->getReachedUse()); in unlinkDefDF()
1771 I.Addr->setSibling(0); in unlinkDefDF()
1773 I.Addr->setSibling(0); in unlinkDefDF()
1776 I.Addr->setReachingDef(RD); in unlinkDefDF()
1778 I.Addr->setReachingDef(RD); in unlinkDefDF()
1780 NodeId Sib = DA.Addr->getSibling(); in unlinkDefDF()
1788 auto TA = addr<DefNode*>(RDA.Addr->getReachedDef()); in unlinkDefDF()
1792 RDA.Addr->setReachedDef(Sib); in unlinkDefDF()
1797 NodeId S = TA.Addr->getSibling(); in unlinkDefDF()
1799 TA.Addr->setSibling(Sib); in unlinkDefDF()
1809 Last.Addr->setSibling(RDA.Addr->getReachedDef()); in unlinkDefDF()
1810 RDA.Addr->setReachedDef(ReachedDefs.front().Id); in unlinkDefDF()
1815 Last.Addr->setSibling(RDA.Addr->getReachedUse()); in unlinkDefDF()
1816 RDA.Addr->setReachedUse(ReachedUses.front().Id); in unlinkDefDF()