Keep track of how many memmove calls were turned into
authorDuncan Sands <baldrick@free.fr>
Thu, 3 Sep 2009 13:37:16 +0000 (13:37 +0000)
committerDuncan Sands <baldrick@free.fr>
Thu, 3 Sep 2009 13:37:16 +0000 (13:37 +0000)
memcpy calls.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80915 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Scalar/MemCpyOptimizer.cpp

index fd74a038453d3d8c83998d015cbe451721887e65..d6b1585d7ad1c5d5c83bea0655f02217df65d606 100644 (file)
@@ -31,6 +31,7 @@ using namespace llvm;
 
 STATISTIC(NumMemCpyInstr, "Number of memcpy instructions deleted");
 STATISTIC(NumMemSetInfer, "Number of memsets inferred");
+STATISTIC(NumMoveToCpy,   "Number of memmoves converted to memcpy");
 
 /// isBytewiseValue - If the specified value can be set by repeating the same
 /// byte in memory, return the i8 value that it is represented with.  This is
@@ -728,10 +729,12 @@ bool MemCpyOpt::processMemMove(MemMoveInst *M) {
   Module *Mod = M->getParent()->getParent()->getParent();
   const Type *Ty = M->getLength()->getType();
   M->setOperand(0, Intrinsic::getDeclaration(Mod, Intrinsic::memcpy, &Ty, 1));
-  
+
   // MemDep may have over conservative information about this instruction, just
   // conservatively flush it from the cache.
   getAnalysis<MemoryDependenceAnalysis>().removeInstruction(M);
+
+  ++NumMoveToCpy;
   return true;
 }