Coalescer should not delete copy instructions whose defs are partially dead. e.g.

%RDI<def,dead> = MOV64rr %RAX<kill>, %EDI<imp-def>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100804 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Evan Cheng
2010-04-08 20:02:37 +00:00
parent b8db3c2c50
commit a57fabe815
4 changed files with 44 additions and 1 deletions

View File

@ -1125,6 +1125,19 @@ unsigned MachineInstr::isConstantValuePHI() const {
return Reg;
}
/// allDefsAreDead - Return true if all the defs of this instruction are dead.
///
bool MachineInstr::allDefsAreDead() const {
for (unsigned i = 0, e = getNumOperands(); i < e; ++i) {
const MachineOperand &MO = getOperand(i);
if (!MO.isReg() || MO.isUse())
continue;
if (!MO.isDead())
return false;
}
return true;
}
void MachineInstr::dump() const {
dbgs() << " " << *this;
}