[PATCH] D21237: LoopRotation: remove iterative calls to rotateLoops
Sebastian Pop via llvm-commits
llvm-commits at lists.llvm.org
Fri Jun 10 12:36:11 PDT 2016
sebpop created this revision.
sebpop added reviewers: dberlin, atrick, hfinkel.
sebpop added subscribers: llvm-commits, hiraditya.
Herald added a subscriber: mzolotukhin.
Loops should be rotated only once. Passes regression test and llvm test-suite.
Patch wrote by Aditya Kumar and Sebastian Pop.
http://reviews.llvm.org/D21237
Files:
llvm/lib/Transforms/Scalar/LoopRotation.cpp
Index: llvm/lib/Transforms/Scalar/LoopRotation.cpp
===================================================================
--- llvm/lib/Transforms/Scalar/LoopRotation.cpp
+++ llvm/lib/Transforms/Scalar/LoopRotation.cpp
@@ -569,9 +569,8 @@
return true;
}
-/// Rotate \c L as many times as possible. Return true if the loop is rotated
-/// at least once.
-static bool iterativelyRotateLoop(Loop *L, unsigned MaxHeaderSize, LoopInfo *LI,
+/// Rotate loop L. Return true if the loop is rotated.
+static bool rotateLoop(Loop *L, unsigned MaxHeaderSize, LoopInfo *LI,
const TargetTransformInfo *TTI,
AssumptionCache *AC, DominatorTree *DT,
ScalarEvolution *SE) {
@@ -582,13 +581,8 @@
// upward. Rotation may not be needed if the loop tail can be folded into the
// loop exit.
bool SimplifiedLatch = simplifyLoopLatch(L, LI, DT);
-
- // One loop can be rotated multiple times.
- bool MadeChange = false;
- while (rotateLoop(L, MaxHeaderSize, LI, TTI, AC, DT, SE, SimplifiedLatch)) {
- MadeChange = true;
- SimplifiedLatch = false;
- }
+ bool MadeChange = rotateLoop(L, MaxHeaderSize, LI, TTI, AC, DT, SE,
+ SimplifiedLatch);
// Restore the loop metadata.
// NB! We presume LoopRotation DOESN'T ADD its own metadata.
@@ -613,7 +607,7 @@
auto *DT = FAM.getCachedResult<DominatorTreeAnalysis>(*F);
auto *SE = FAM.getCachedResult<ScalarEvolutionAnalysis>(*F);
- bool Changed = iterativelyRotateLoop(&L, MaxHeaderSize, LI, TTI, AC, DT, SE);
+ bool Changed = rotateLoop(&L, MaxHeaderSize, LI, TTI, AC, DT, SE);
if (!Changed)
return PreservedAnalyses::all();
return getLoopPassPreservedAnalyses();
@@ -654,7 +648,7 @@
auto *SEWP = getAnalysisIfAvailable<ScalarEvolutionWrapperPass>();
auto *SE = SEWP ? &SEWP->getSE() : nullptr;
- return iterativelyRotateLoop(L, MaxHeaderSize, LI, TTI, AC, DT, SE);
+ return rotateLoop(L, MaxHeaderSize, LI, TTI, AC, DT, SE);
}
};
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D21237.60387.patch
Type: text/x-patch
Size: 2063 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160610/a403d1f1/attachment.bin>
More information about the llvm-commits
mailing list