mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-11 13:46:13 +00:00
Bug fix: some redundant copies were not being deleted after detection :-|.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3959 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
1c10f17552
commit
7e5167a3e2
@ -30,23 +30,25 @@ DeleteInstruction(MachineCodeForBasicBlock& mvec,
|
||||
const TargetMachine& target)
|
||||
{
|
||||
// Check if this instruction is in a delay slot of its predecessor.
|
||||
// If so, replace this instruction with a nop, else just delete it.
|
||||
// By replacing in place, we save having to update the I-I maps.
|
||||
if (BBI != mvec.begin())
|
||||
{
|
||||
const MachineInstrInfo& mii = target.getInstrInfo();
|
||||
MachineInstr* predMI = *(BBI-1);
|
||||
if (unsigned ndelay = mii.getNumDelaySlots(predMI->getOpCode()))
|
||||
{
|
||||
// This instruction is in a delay slot of its predecessor, so
|
||||
// replace it with a nop. By replacing in place, we save having
|
||||
// to update the I-I maps.
|
||||
//
|
||||
assert(ndelay == 1 && "Not yet handling multiple-delay-slot targets");
|
||||
(*BBI)->replace(mii.getNOPOpCode(), 0);
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
mvec.erase(BBI);
|
||||
BBI = mvec.end();
|
||||
}
|
||||
|
||||
// The instruction is not in a delay slot, so we can simply erase it.
|
||||
mvec.erase(BBI);
|
||||
BBI = mvec.end();
|
||||
}
|
||||
|
||||
//******************* Individual Peephole Optimizations ********************/
|
||||
|
Loading…
Reference in New Issue
Block a user