forked from OSchip/llvm-project
Rename forgetLoopBackedgeTakenCount to forgetLoop, because it
clears out more information than just the stored backedge taken count. llvm-svn: 85664
This commit is contained in:
parent
969e83a4ff
commit
880c92ac1c
|
@ -563,11 +563,10 @@ namespace llvm {
|
|||
/// has an analyzable loop-invariant backedge-taken count.
|
||||
bool hasLoopInvariantBackedgeTakenCount(const Loop *L);
|
||||
|
||||
/// forgetLoopBackedgeTakenCount - This method should be called by the
|
||||
/// client when it has changed a loop in a way that may effect
|
||||
/// ScalarEvolution's ability to compute a trip count, or if the loop
|
||||
/// is deleted.
|
||||
void forgetLoopBackedgeTakenCount(const Loop *L);
|
||||
/// forgetLoop - This method should be called by the client when it has
|
||||
/// changed a loop in a way that may effect ScalarEvolution's ability to
|
||||
/// compute a trip count, or if the loop is deleted.
|
||||
void forgetLoop(const Loop *L);
|
||||
|
||||
/// GetMinTrailingZeros - Determine the minimum number of zero bits that S
|
||||
/// is guaranteed to end in (at every loop iteration). It is, at the same
|
||||
|
|
|
@ -3265,9 +3265,8 @@ ScalarEvolution::getBackedgeTakenInfo(const Loop *L) {
|
|||
// Now that we know more about the trip count for this loop, forget any
|
||||
// existing SCEV values for PHI nodes in this loop since they are only
|
||||
// conservative estimates made without the benefit of trip count
|
||||
// information. This is similar to the code in
|
||||
// forgetLoopBackedgeTakenCount, except that it handles SCEVUnknown PHI
|
||||
// nodes specially.
|
||||
// information. This is similar to the code in forgetLoop, except that
|
||||
// it handles SCEVUnknown PHI nodes specially.
|
||||
if (ItCount.hasAnyInfo()) {
|
||||
SmallVector<Instruction *, 16> Worklist;
|
||||
PushLoopPHIs(L, Worklist);
|
||||
|
@ -3301,13 +3300,14 @@ ScalarEvolution::getBackedgeTakenInfo(const Loop *L) {
|
|||
return Pair.first->second;
|
||||
}
|
||||
|
||||
/// forgetLoopBackedgeTakenCount - This method should be called by the
|
||||
/// client when it has changed a loop in a way that may effect
|
||||
/// ScalarEvolution's ability to compute a trip count, or if the loop
|
||||
/// is deleted.
|
||||
void ScalarEvolution::forgetLoopBackedgeTakenCount(const Loop *L) {
|
||||
/// forgetLoop - This method should be called by the client when it has
|
||||
/// changed a loop in a way that may effect ScalarEvolution's ability to
|
||||
/// compute a trip count, or if the loop is deleted.
|
||||
void ScalarEvolution::forgetLoop(const Loop *L) {
|
||||
// Drop any stored trip count value.
|
||||
BackedgeTakenCounts.erase(L);
|
||||
|
||||
// Drop information about expressions based on loop-header PHIs.
|
||||
SmallVector<Instruction *, 16> Worklist;
|
||||
PushLoopPHIs(L, Worklist);
|
||||
|
||||
|
|
|
@ -322,7 +322,7 @@ void IndVarSimplify::RewriteNonIntegerIVs(Loop *L) {
|
|||
// may not have been able to compute a trip count. Now that we've done some
|
||||
// re-writing, the trip count may be computable.
|
||||
if (Changed)
|
||||
SE->forgetLoopBackedgeTakenCount(L);
|
||||
SE->forgetLoop(L);
|
||||
}
|
||||
|
||||
bool IndVarSimplify::runOnLoop(Loop *L, LPPassManager &LPM) {
|
||||
|
|
|
@ -161,7 +161,7 @@ bool LoopDeletion::runOnLoop(Loop* L, LPPassManager& LPM) {
|
|||
// Tell ScalarEvolution that the loop is deleted. Do this before
|
||||
// deleting the loop so that ScalarEvolution can look at the loop
|
||||
// to determine what it needs to clean up.
|
||||
SE.forgetLoopBackedgeTakenCount(L);
|
||||
SE.forgetLoop(L);
|
||||
|
||||
// Connect the preheader directly to the exit block.
|
||||
TerminatorInst* TI = preheader->getTerminator();
|
||||
|
|
|
@ -157,7 +157,7 @@ bool LoopRotate::rotateLoop(Loop *Lp, LPPassManager &LPM) {
|
|||
// Anything ScalarEvolution may know about this loop or the PHI nodes
|
||||
// in its header will soon be invalidated.
|
||||
if (ScalarEvolution *SE = getAnalysisIfAvailable<ScalarEvolution>())
|
||||
SE->forgetLoopBackedgeTakenCount(L);
|
||||
SE->forgetLoop(L);
|
||||
|
||||
// Find new Loop header. NewHeader is a Header's one and only successor
|
||||
// that is inside loop. Header's other successor is outside the
|
||||
|
|
Loading…
Reference in New Issue