Don't access MO reference after invalidating operand list.

This should unbreak llvm-x86_64-linux.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156778 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Jakob Stoklund Olesen 2012-05-14 21:30:58 +00:00
parent 4d10829e12
commit 6565a70970

View File

@ -659,9 +659,10 @@ RAFast::reloadVirtReg(MachineInstr *MI, unsigned OpNum,
// Return true if the operand kills its register. // Return true if the operand kills its register.
bool RAFast::setPhysReg(MachineInstr *MI, unsigned OpNum, unsigned PhysReg) { bool RAFast::setPhysReg(MachineInstr *MI, unsigned OpNum, unsigned PhysReg) {
MachineOperand &MO = MI->getOperand(OpNum); MachineOperand &MO = MI->getOperand(OpNum);
bool Dead = MO.isDead();
if (!MO.getSubReg()) { if (!MO.getSubReg()) {
MO.setReg(PhysReg); MO.setReg(PhysReg);
return MO.isKill() || MO.isDead(); return MO.isKill() || Dead;
} }
// Handle subregister index. // Handle subregister index.
@ -680,7 +681,7 @@ bool RAFast::setPhysReg(MachineInstr *MI, unsigned OpNum, unsigned PhysReg) {
if (MO.isDef() && MO.isUndef()) if (MO.isDef() && MO.isUndef())
MI->addRegisterDefined(PhysReg, TRI); MI->addRegisterDefined(PhysReg, TRI);
return MO.isDead(); return Dead;
} }
// Handle special instruction operand like early clobbers and tied ops when // Handle special instruction operand like early clobbers and tied ops when