Revert r50441. The original code was correct. Add some more comments so that I...
authorOwen Anderson <resistor@mac.com>
Tue, 29 Apr 2008 21:51:00 +0000 (21:51 +0000)
committerOwen Anderson <resistor@mac.com>
Tue, 29 Apr 2008 21:51:00 +0000 (21:51 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50446 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Scalar/MemCpyOptimizer.cpp

index 9a39c8fd29ec601a232d4eb3c8dbee9337fca0fd..d6e5f3964bb6944a3f23420a3ddfd15d963001bd 100644 (file)
@@ -668,18 +668,24 @@ bool MemCpyOpt::processMemCpy(MemCpyInst* M) {
   
   CallInst* C = CallInst::Create(MemCpyFun, args.begin(), args.end(), "", M);
   
+  
+  // If C and M don't interfere, then this is a valid transformation.  If they
+  // did, this would mean that the two sources overlap, which would be bad.
   if (MD.getDependency(C) == MDep) {
     MD.dropInstruction(M);
     M->eraseFromParent();
+    
+    NumMemCpyInstr++;
+    
     return true;
   }
   
+  // Otherwise, there was no point in doing this, so we remove the call we
+  // inserted and act like nothing happened.
   MD.removeInstruction(C);
   C->eraseFromParent();
   
-  NumMemCpyInstr++;
-  
-  return true;
+  return false;
 }
 
 // MemCpyOpt::runOnFunction - This is the main transformation entry point for a