Lines Matching refs:RA

106 static void printRefHeader(raw_ostream &OS, const NodeAddr<RefNode*> RA,  in printRefHeader()  argument
108 OS << Print<NodeId>(RA.Id, G) << '<' in printRefHeader()
109 << Print<RegisterRef>(RA.Addr->getRegRef(G), G) << '>'; in printRefHeader()
110 if (RA.Addr->getFlags() & NodeAttrs::Fixed) in printRefHeader()
792 NodeAddr<RefNode*> RA = NA; in cloneNode() local
793 RA.Addr->setReachingDef(0); in cloneNode()
794 RA.Addr->setSibling(0); in cloneNode()
890 for (NodeAddr<RefNode*> RA : IA.Addr->members(*this)) in build()
891 AllRefs.insert(RA.Addr->getRegRef(*this)); in build()
1112 NodeAddr<RefNode*> RA) const { in getRelatedRefs()
1113 assert(IA.Id != 0 && RA.Id != 0); in getRelatedRefs()
1116 NodeId Start = RA.Id; in getRelatedRefs()
1118 Refs.push_back(RA); in getRelatedRefs()
1119 RA = getNextRelated(IA, RA); in getRelatedRefs()
1120 } while (RA.Id != 0 && RA.Id != Start); in getRelatedRefs()
1138 NodeAddr<RefNode*> RA) const { in getNextRelated()
1139 assert(IA.Id != 0 && RA.Id != 0); in getNextRelated()
1141 auto Related = [this,RA](NodeAddr<RefNode*> TA) -> bool { in getNextRelated()
1142 if (TA.Addr->getKind() != RA.Addr->getKind()) in getNextRelated()
1144 if (TA.Addr->getRegRef(*this) != RA.Addr->getRegRef(*this)) in getNextRelated()
1148 auto RelatedStmt = [&Related,RA](NodeAddr<RefNode*> TA) -> bool { in getNextRelated()
1150 &RA.Addr->getOp() == &TA.Addr->getOp(); in getNextRelated()
1152 auto RelatedPhi = [&Related,RA](NodeAddr<RefNode*> TA) -> bool { in getNextRelated()
1159 const NodeAddr<const PhiUseNode*> RUA = RA; in getNextRelated()
1163 RegisterRef RR = RA.Addr->getRegRef(*this); in getNextRelated()
1165 return RA.Addr->getNextRef(RR, RelatedStmt, true, *this); in getNextRelated()
1166 return RA.Addr->getNextRef(RR, RelatedPhi, true, *this); in getNextRelated()
1176 DataFlowGraph::locateNextRef(NodeAddr<InstrNode*> IA, NodeAddr<RefNode*> RA, in locateNextRef() argument
1178 assert(IA.Id != 0 && RA.Id != 0); in locateNextRef()
1181 NodeId Start = RA.Id; in locateNextRef()
1183 NA = getNextRelated(IA, RA); in locateNextRef()
1188 RA = NA; in locateNextRef()
1192 return std::make_pair(RA, NA); in locateNextRef()
1193 return std::make_pair(RA, NodeAddr<RefNode*>()); in locateNextRef()
1199 NodeAddr<RefNode*> RA, bool Create) { in getNextShadow() argument
1200 assert(IA.Id != 0 && RA.Id != 0); in getNextShadow()
1202 uint16_t Flags = RA.Addr->getFlags() | NodeAttrs::Shadow; in getNextShadow()
1206 auto Loc = locateNextRef(IA, RA, IsShadow); in getNextShadow()
1211 NodeAddr<RefNode*> NA = cloneNode(RA); in getNextShadow()
1220 NodeAddr<RefNode*> RA) const { in getNextShadow()
1221 assert(IA.Id != 0 && RA.Id != 0); in getNextShadow()
1222 uint16_t Flags = RA.Addr->getFlags() | NodeAttrs::Shadow; in getNextShadow()
1226 return locateNextRef(IA, RA, IsShadow).second; in getNextShadow()
1384 for (NodeAddr<RefNode*> RA : IA.Addr->members_if(IsDef, *this)) in recordDefsForDF()
1385 Defs.insert(RA.Addr->getRegRef(*this)); in recordDefsForDF()
1528 for (NodeAddr<RefNode*> RA : Refs) { in removeUnusedPhis()
1529 if (NodeId RD = RA.Addr->getReachingDef()) { in removeUnusedPhis()
1535 if (RA.Addr->isDef()) in removeUnusedPhis()
1536 unlinkDef(RA, true); in removeUnusedPhis()
1538 unlinkUse(RA, true); in removeUnusedPhis()
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()
1616 linkRefUp<UseNode*>(SA, RA, DS); in linkStmtRefs()
1618 linkRefUp<DefNode*>(SA, RA, DS); in linkStmtRefs()
1630 auto IsClobber = [] (NodeAddr<RefNode*> RA) -> bool { in linkBlockRefs() argument
1631 return IsDef(RA) && (RA.Addr->getFlags() & NodeAttrs::Clobbering); in linkBlockRefs()
1633 auto IsNoClobber = [] (NodeAddr<RefNode*> RA) -> bool { in linkBlockRefs() argument
1634 return IsDef(RA) && !(RA.Addr->getFlags() & NodeAttrs::Clobbering); in linkBlockRefs()
1685 NodeAddr<RefNode*> RA = IA.Addr->getFirstMember(*this); in linkBlockRefs() local
1686 assert(RA.Id != 0); in linkBlockRefs()
1687 if (EHLiveIns.count(RA.Addr->getRegRef(*this))) in linkBlockRefs()
1759 auto RA = addr<RefNode*>(N); in unlinkDefDF() local
1761 Res.push_back(RA); in unlinkDefDF()
1762 N = RA.Addr->getSibling(); in unlinkDefDF()