Lines Matching defs:Reg
46 bool hasIdentical(Register Reg, MachineInstr *ArgMI) {
47 MachineInstr *MI = lookup(Reg);
60 void clearKillsForDef(Register Reg, MachineBasicBlock *MBB,
114 // Clear any previous kill flag on Reg found before I in MBB. Walk backwards
115 // in MBB and if needed continue in predecessors until a use/def of Reg is
119 clearKillsForDef(Register Reg, MachineBasicBlock *MBB,
125 if (MachineInstr *KillMI = RegKills[MBB->getNumber()].lookup(Reg)) {
126 KillMI->clearRegisterKills(Reg, TRI);
131 if (MachineInstr *DefMI = RegDefs[MBB->getNumber()].lookup(Reg))
136 if (!MBB->isLiveIn(Reg))
137 MBB->addLiveIn(Reg);
141 clearKillsForDef(Reg, Pred, Pred->end(), VisitedPreds);
145 Register Reg = MI->getOperand(0).getReg();
147 clearKillsForDef(Reg, MI->getParent(), MI->getIterator(), VisitedPreds);
190 for (auto [Reg, DefMI] : RegDefs[FirstPred->getNumber()])
193 [&, &Reg = Reg, &DefMI = DefMI](const MachineBasicBlock *Pred) {
194 return RegDefs[Pred->getNumber()].hasIdentical(Reg, DefMI);
196 MBBDefs[Reg] = DefMI;
229 Register Reg = DefI.first;
230 if (MI.modifiesRegister(Reg, TRI)) {
231 MBBDefs.erase(Reg);
232 MBBKills.erase(Reg);
233 } else if (MI.findRegisterUseOperandIdx(Reg, true /*isKill*/, TRI) != -1)
235 MBBKills[Reg] = &MI;