From: Duncan Sands Date: Thu, 3 Sep 2009 13:37:16 +0000 (+0000) Subject: Keep track of how many memmove calls were turned into X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=05cd03b33559732f8ed55e5ff7554fd06d59eb6a;p=oota-llvm.git Keep track of how many memmove calls were turned into memcpy calls. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80915 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Transforms/Scalar/MemCpyOptimizer.cpp b/lib/Transforms/Scalar/MemCpyOptimizer.cpp index fd74a038453..d6b1585d7ad 100644 --- a/lib/Transforms/Scalar/MemCpyOptimizer.cpp +++ b/lib/Transforms/Scalar/MemCpyOptimizer.cpp @@ -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().removeInstruction(M); + + ++NumMoveToCpy; return true; }