Bug fix: some redundant copies were not being deleted after detection :-|.
authorVikram S. Adve <vadve@cs.uiuc.edu>
Fri, 27 Sep 2002 14:27:37 +0000 (14:27 +0000)
committerVikram S. Adve <vadve@cs.uiuc.edu>
Fri, 27 Sep 2002 14:27:37 +0000 (14:27 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3959 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/SparcV9/SparcV9PeepholeOpts.cpp

index ee749efe8eba781990cbb004d9b2a6adb7b2553c..fb83cbbe8e0d80d0ec807410cd3118b6cc4580a5 100644 (file)
@@ -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 ********************/