Lines Matching defs:IA

1024 // Push all definitions from the instruction node IA to an appropriate
1026 void DataFlowGraph::pushAllDefs(Instr IA, DefStackMap &DefM) {
1027 pushClobbers(IA, DefM);
1028 pushDefs(IA, DefM);
1031 // Push all definitions from the instruction node IA to an appropriate
1033 void DataFlowGraph::pushClobbers(Instr IA, DefStackMap &DefM) {
1042 // - if there are two or more related defs in IA (i.e. coming from
1049 for (Def DA : IA.Addr->members_if(IsDef, *this)) {
1055 NodeList Rel = getRelatedRefs(IA, DA);
1077 // Push all definitions from the instruction node IA to an appropriate
1079 void DataFlowGraph::pushDefs(Instr IA, DefStackMap &DefM) {
1090 // - if there are two or more related defs in IA (i.e. coming from
1097 for (Def DA : IA.Addr->members_if(IsDef, *this)) {
1103 NodeList Rel = getRelatedRefs(IA, DA);
1110 MachineInstr *MI = Stmt(IA).Addr->getCode();
1135 NodeList DataFlowGraph::getRelatedRefs(Instr IA, Ref RA) const {
1136 assert(IA.Id != 0 && RA.Id != 0);
1142 RA = getNextRelated(IA, RA);
1156 // Return the next reference node in the instruction node IA that is related
1162 Ref DataFlowGraph::getNextRelated(Instr IA, Ref RA) const {
1163 assert(IA.Id != 0 && RA.Id != 0);
1176 if (IA.Addr->getKind() == NodeAttrs::Stmt) {
1183 assert(IA.Addr->getKind() == NodeAttrs::Phi);
1196 // Find the next node related to RA in IA that satisfies condition P.
1202 std::pair<Ref, Ref> DataFlowGraph::locateNextRef(Instr IA, Ref RA,
1204 assert(IA.Id != 0 && RA.Id != 0);
1209 NA = getNextRelated(IA, RA);
1222 // Get the next shadow node in IA corresponding to RA, and optionally create
1224 Ref DataFlowGraph::getNextShadow(Instr IA, Ref RA, bool Create) {
1225 assert(IA.Id != 0 && RA.Id != 0);
1231 auto Loc = locateNextRef(IA, RA, IsShadow);
1238 IA.Addr->addMemberAfter(Loc.first, NA, *this);
1397 for (Instr IA : BA.Addr->members(*this)) {
1398 for (Ref RA : IA.Addr->members_if(IsDef, *this)) {
1502 // For a given reference node TA in an instruction node IA, connect the
1506 void DataFlowGraph::linkRefUp(Instr IA, NodeAddr<T> TA, DefStack &DS) {
1535 TAP = getNextShadow(IA, TAP, true);
1594 for (Instr IA : BA.Addr->members(*this)) {
1597 if (IA.Addr->getKind() == NodeAttrs::Stmt) {
1598 linkStmtRefs(DefM, IA, IsUse);
1599 linkStmtRefs(DefM, IA, IsClobber);
1603 pushClobbers(IA, DefM);
1605 if (IA.Addr->getKind() == NodeAttrs::Stmt)
1606 linkStmtRefs(DefM, IA, IsNoClobber);
1608 pushDefs(IA, DefM);
1633 for (Instr IA : SBA.Addr->members_if(IsPhi, *this)) {
1637 Ref RA = IA.Addr->getFirstMember(*this);
1643 for (auto U : IA.Addr->members_if(IsUseForBA, *this)) {
1646 linkRefUp<UseNode *>(IA, PUA, DefM[RR.Reg]);