[llvm-commits] [llvm] r123124 - /llvm/trunk/lib/Transforms/Scalar/MemCpyOptimizer.cpp

Chris Lattner sabre at nondot.org
Sun Jan 9 11:26:10 PST 2011


Author: lattner
Date: Sun Jan  9 13:26:10 2011
New Revision: 123124

URL: http://llvm.org/viewvc/llvm-project?rev=123124&view=rev
Log:
fix a few old bugs (found by inspection) where we would zap instructions
without informing memdep.  This could cause nondeterminstic weirdness 
based on where instructions happen to get allocated, and will hopefully
breath some life into some broken testers.

Modified:
    llvm/trunk/lib/Transforms/Scalar/MemCpyOptimizer.cpp

Modified: llvm/trunk/lib/Transforms/Scalar/MemCpyOptimizer.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/MemCpyOptimizer.cpp?rev=123124&r1=123123&r2=123124&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/Scalar/MemCpyOptimizer.cpp (original)
+++ llvm/trunk/lib/Transforms/Scalar/MemCpyOptimizer.cpp Sun Jan  9 13:26:10 2011
@@ -385,7 +385,8 @@
       
       // Check to see if this store is to a constant offset from the start ptr.
       int64_t Offset;
-      if (!IsPointerOffset(StartPtr, NextStore->getPointerOperand(), Offset, *TD))
+      if (!IsPointerOffset(StartPtr, NextStore->getPointerOperand(),
+                           Offset, *TD))
         break;
       
       Ranges.addStore(Offset, NextStore);
@@ -490,6 +491,7 @@
         if (changed) {
           MD->removeInstruction(SI);
           SI->eraseFromParent();
+          MD->removeInstruction(LI);
           LI->eraseFromParent();
           ++NumMemCpyInstr;
           return true;
@@ -786,6 +788,7 @@
   if (CallInst *C = dyn_cast<CallInst>(DepInfo.getInst())) {
     if (performCallSlotOptzn(M, M->getDest(), M->getSource(),
                              CopySize->getZExtValue(), C)) {
+      MD->removeInstruction(M);
       M->eraseFromParent();
       return true;
     }





More information about the llvm-commits mailing list