Track live-out physical registers in MachineDCE.

Patch by Sanjoy Das!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133910 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Jakob Stoklund Olesen 2011-06-27 15:00:36 +00:00
parent 9174d5c738
commit f27229ee5a

View File

@ -110,9 +110,14 @@ bool DeadMachineInstructionElim::runOnMachineFunction(MachineFunction &MF) {
LivePhysRegs.set(Reg); LivePhysRegs.set(Reg);
} }
// FIXME: Add live-ins from sucessors to LivePhysRegs. Normally, physregs // Add live-ins from sucessors to LivePhysRegs. Normally, physregs are not
// are not live across blocks, but some targets (x86) can have flags live // live across blocks, but some targets (x86) can have flags live out of a
// out of a block. // block.
for (MachineBasicBlock::succ_iterator S = MBB->succ_begin(),
E = MBB->succ_end(); S != E; S++)
for (MachineBasicBlock::livein_iterator LI = (*S)->livein_begin();
LI != (*S)->livein_end(); LI++)
LivePhysRegs.set(*LI);
// Now scan the instructions and delete dead ones, tracking physreg // Now scan the instructions and delete dead ones, tracking physreg
// liveness as we go. // liveness as we go.