Handle register masks in DeadMachineInstructionElim.

Don't track live physregs that are clobbered by a register mask operand.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148588 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Jakob Stoklund Olesen 2012-01-20 22:27:09 +00:00
parent 4d6ccb5f68
commit 6b88c180da

View File

@ -173,6 +173,13 @@ bool DeadMachineInstructionElim::runOnMachineFunction(MachineFunction &MF) {
*SubRegs; ++SubRegs)
LivePhysRegs.reset(*SubRegs);
}
} else if (MO.isRegMask()) {
// Register mask of preserved registers. All clobbers are dead.
if (const uint32_t *Mask = MO.getRegMask())
LivePhysRegs.clearBitsNotInMask(Mask);
else
LivePhysRegs.reset();
LivePhysRegs |= ReservedRegs;
}
}
// Record the physreg uses, after the defs, in case a physreg is