diff options
Diffstat (limited to 'llvm/lib/Transforms/Utils/LoopRotationUtils.cpp')
-rw-r--r-- | llvm/lib/Transforms/Utils/LoopRotationUtils.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/Utils/LoopRotationUtils.cpp b/llvm/lib/Transforms/Utils/LoopRotationUtils.cpp index 2c68e4b..200993f 100644 --- a/llvm/lib/Transforms/Utils/LoopRotationUtils.cpp +++ b/llvm/lib/Transforms/Utils/LoopRotationUtils.cpp @@ -46,6 +46,10 @@ using namespace llvm; STATISTIC(NumNotRotatedDueToHeaderSize, "Number of loops not rotated due to the header size"); +STATISTIC(NumInstrsHoisted, + "Number of instructions hoisted into loop preheader"); +STATISTIC(NumInstrsDuplicated, + "Number of instructions cloned into loop preheader"); STATISTIC(NumRotated, "Number of loops rotated"); static cl::opt<bool> @@ -424,11 +428,13 @@ bool LoopRotate::rotateLoop(Loop *L, bool SimplifiedLatch) { !Inst->mayWriteToMemory() && !Inst->isTerminator() && !isa<DbgInfoIntrinsic>(Inst) && !isa<AllocaInst>(Inst)) { Inst->moveBefore(LoopEntryBranch); + ++NumInstrsHoisted; continue; } // Otherwise, create a duplicate of the instruction. Instruction *C = Inst->clone(); + ++NumInstrsDuplicated; // Eagerly remap the operands of the instruction. RemapInstruction(C, ValueMap, |