Preserve ScalarEvolution in the loop unroller.

llvm-svn: 109412
This commit is contained in:
Dan Gohman 2010-07-26 18:02:06 +00:00
parent e8ecb4acf6
commit a7908ae369
1 changed files with 6 additions and 0 deletions

View File

@ -24,6 +24,7 @@
#include "llvm/ADT/Statistic.h"
#include "llvm/Analysis/ConstantFolding.h"
#include "llvm/Analysis/LoopPass.h"
#include "llvm/Analysis/ScalarEvolution.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Transforms/Utils/BasicBlockUtils.h"
@ -127,6 +128,11 @@ bool llvm::UnrollLoop(Loop *L, unsigned Count, LoopInfo* LI, LPPassManager* LPM)
return false;
}
// Notify ScalarEvolution that the loop will be substantially changed,
// if not outright eliminated.
if (ScalarEvolution *SE = LPM->getAnalysisIfAvailable<ScalarEvolution>())
SE->forgetLoop(L);
// Find trip count
unsigned TripCount = L->getSmallConstantTripCount();
// Find trip multiple if count is not available