Move trip count discovery outside of the generic LoopUnroll helper. This

removes its dependence on canonical induction variables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135829 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Andrew Trick
2011-07-23 00:33:05 +00:00
parent ba03377fa1
commit 2045ce154a
3 changed files with 11 additions and 15 deletions

View File

@@ -137,9 +137,14 @@ bool LoopUnroll::runOnLoop(Loop *L, LPPassManager &LPM) {
// Find trip count
unsigned TripCount = L->getSmallConstantTripCount();
unsigned Count = CurrentCount;
// Find trip multiple if count is not available
unsigned TripMultiple = 1;
if (TripCount == 0)
TripMultiple = L->getSmallConstantTripMultiple();
// Automatically select an unroll count.
unsigned Count = CurrentCount;
if (Count == 0) {
// Conservative heuristic: if we know the trip count, see if we can
// completely unroll (subject to the threshold, checked below); otherwise
@@ -183,7 +188,7 @@ bool LoopUnroll::runOnLoop(Loop *L, LPPassManager &LPM) {
// Unroll the loop.
Function *F = L->getHeader()->getParent();
if (!UnrollLoop(L, Count, LI, &LPM))
if (!UnrollLoop(L, Count, TripCount, TripMultiple, LI, &LPM))
return false;
// FIXME: Reconstruct dom info, because it is not preserved properly.