delete removeFromParent();
}
- /// findRegisterUseOperand() - Returns the operand index that is a use of
+ /// findRegisterUseOperandIdx() - Returns the operand index that is a use of
/// the specific register or -1 if it is not found. It further tightening
/// the search criteria to a use that kills the register if isKill is true.
- int findRegisterUseOperand(unsigned Reg, bool isKill = false);
+ int findRegisterUseOperandIdx(unsigned Reg, bool isKill = false);
/// findRegisterDefOperand() - Returns the MachineOperand that is a def of
/// the specific register or NULL if it is not found.
// If the source instruction was killing the source register before the
// merge, unset the isKill marker given the live range has been extended.
- int UIdx = ValLREndInst->findRegisterUseOperand(IntB.reg, true);
+ int UIdx = ValLREndInst->findRegisterUseOperandIdx(IntB.reg, true);
if (UIdx != -1)
ValLREndInst->getOperand(UIdx).unsetIsKill();
"Cannot have a live-in virtual register!");
HandlePhysRegUse(*I, Ret);
// Add live-out registers as implicit uses.
- Ret->addRegOperand(*I, false, true);
+ if (Ret->findRegisterUseOperandIdx(*I) == -1)
+ Ret->addRegOperand(*I, false, true);
}
}
}
}
-/// findRegisterUseOperand() - Returns the MachineOperand that is a use of
+/// findRegisterUseOperandIdx() - Returns the MachineOperand that is a use of
/// the specific register or -1 if it is not found. It further tightening
/// the search criteria to a use that kills the register if isKill is true.
-int MachineInstr::findRegisterUseOperand(unsigned Reg, bool isKill){
+int MachineInstr::findRegisterUseOperandIdx(unsigned Reg, bool isKill) {
for (unsigned i = 0, e = getNumOperands(); i != e; ++i) {
MachineOperand &MO = getOperand(i);
if (MO.isReg() && MO.isUse() && MO.getReg() == Reg)
I = next(I);
while (I != MBB->end()) {
Dist++;
- if (I->findRegisterUseOperand(Reg) != -1)
+ if (I->findRegisterUseOperandIdx(Reg) != -1)
return Dist;
I = next(I);
}
// necessary.
bool WasKill = false;
if (SSMI) {
- int UIdx = SSMI->findRegisterUseOperand(PhysReg, true);
+ int UIdx = SSMI->findRegisterUseOperandIdx(PhysReg, true);
if (UIdx != -1) {
MachineOperand &MOK = SSMI->getOperand(UIdx);
WasKill = MOK.isKill();
// necessary.
bool WasKill = false;
if (SSMI) {
- int UIdx = SSMI->findRegisterUseOperand(PhysReg, true);
+ int UIdx = SSMI->findRegisterUseOperandIdx(PhysReg, true);
if (UIdx != -1) {
MachineOperand &MOK = SSMI->getOperand(UIdx);
WasKill = MOK.isKill();
MachineInstr *CopyMI = prior(MII);
if (WasKill) {
// Transfer kill to the next use.
- int UIdx = CopyMI->findRegisterUseOperand(PhysReg);
+ int UIdx = CopyMI->findRegisterUseOperandIdx(PhysReg);
assert(UIdx != -1);
MachineOperand &MOU = CopyMI->getOperand(UIdx);
MOU.setIsKill();
// extended. Remove its kill.
bool WasKill = false;
if (SSMI) {
- int UIdx = SSMI->findRegisterUseOperand(InReg, true);
+ int UIdx = SSMI->findRegisterUseOperandIdx(InReg, true);
if (UIdx != -1) {
MachineOperand &MOK = SSMI->getOperand(UIdx);
WasKill = MOK.isKill();
if (NextMII != MBB.end()) {
// If NextMII uses InReg and the use is not a two address
// operand, mark it killed.
- int UIdx = NextMII->findRegisterUseOperand(InReg);
+ int UIdx = NextMII->findRegisterUseOperandIdx(InReg);
if (UIdx != -1) {
MachineOperand &MOU = NextMII->getOperand(UIdx);
if (WasKill) {
for (unsigned j = 0; j < 2; ++j) {
// Look at the two new MI's in reverse order.
MachineInstr *NewMI = NewMIs[j];
- int NIdx = NewMI->findRegisterUseOperand(Reg);
+ int NIdx = NewMI->findRegisterUseOperandIdx(Reg);
if (NIdx == -1)
continue;
LV.addVirtualRegisterKilled(Reg, NewMI);
}
}
- bool BaseKill = Loc->findRegisterUseOperand(Base, true) != -1;
+ bool BaseKill = Loc->findRegisterUseOperandIdx(Base, true) != -1;
if (mergeOps(MBB, ++Loc, SOffset, Base, BaseKill, Opcode,Scratch,Regs, TII)) {
Merges.push_back(prior(Loc));
for (unsigned i = SIndex, e = MemOps.size(); i != e; ++i) {