From 7e5167a3e2443db63ad7382c32638d84d9fec270 Mon Sep 17 00:00:00 2001 From: "Vikram S. Adve" Date: Fri, 27 Sep 2002 14:27:37 +0000 Subject: [PATCH] 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 --- lib/Target/SparcV9/SparcV9PeepholeOpts.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/lib/Target/SparcV9/SparcV9PeepholeOpts.cpp b/lib/Target/SparcV9/SparcV9PeepholeOpts.cpp index ee749efe8eb..fb83cbbe8e0 100644 --- a/lib/Target/SparcV9/SparcV9PeepholeOpts.cpp +++ b/lib/Target/SparcV9/SparcV9PeepholeOpts.cpp @@ -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 ********************/