Correctly update def/use information for modified machine operands.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11087 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Alkis Evlogimenos
2004-02-02 21:56:40 +00:00
parent 782ce955b2
commit eea81bafd6

View File

@ -146,11 +146,17 @@ bool TwoAddressInstructionPass::runOnMachineFunction(MachineFunction &MF) {
LV.addVirtualRegisterDead(regB, &*mbbi, prevMi); LV.addVirtualRegisterDead(regB, &*mbbi, prevMi);
// replace all occurences of regB with regA // replace all occurences of regB with regA
// and mark all uses and defs of regA as def&use
for (unsigned i = 1; i < mi->getNumOperands(); ++i) { for (unsigned i = 1; i < mi->getNumOperands(); ++i) {
if (mi->getOperand(i).isRegister() && MachineOperand& op = mi->getOperand(i);
mi->getOperand(i).getReg() == regB) if (op.isRegister()) {
if (op.getReg() == regB)
mi->SetMachineOperandReg(i, regA); mi->SetMachineOperandReg(i, regA);
if (op.getReg() == regA)
op.setDef().setUse();
} }
}
DEBUG(std::cerr << "\t\tmodified original to: "; DEBUG(std::cerr << "\t\tmodified original to: ";
mi->print(std::cerr, TM)); mi->print(std::cerr, TM));
assert(mi->getOperand(0).getAllocatedRegNum() == assert(mi->getOperand(0).getAllocatedRegNum() ==