aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Gohman <gohman@apple.com>2008-08-05 22:34:21 +0000
committerDan Gohman <gohman@apple.com>2008-08-05 22:34:21 +0000
commit5a6c448a7ec2292649f73a813136ae709a23c8e0 (patch)
tree818723b97eb73f7f384e0af7b8f7b3f2019bf650
parent837f39b839f08841145f71e0e81c1a1b1efd2a92 (diff)
Pass the computed iteration count value to RewriteLoopExitValues
instead of having it call getIterationCount again. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54380 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Transforms/Scalar/IndVarSimplify.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/lib/Transforms/Scalar/IndVarSimplify.cpp b/lib/Transforms/Scalar/IndVarSimplify.cpp
index cde16e7473..5d709e50fb 100644
--- a/lib/Transforms/Scalar/IndVarSimplify.cpp
+++ b/lib/Transforms/Scalar/IndVarSimplify.cpp
@@ -90,7 +90,7 @@ namespace {
std::set<Instruction*> &DeadInsts);
Instruction *LinearFunctionTestReplace(Loop *L, SCEV *IterationCount,
SCEVExpander &RW);
- void RewriteLoopExitValues(Loop *L);
+ void RewriteLoopExitValues(Loop *L, SCEV *IterationCount);
void DeleteTriviallyDeadInstructions(std::set<Instruction*> &Insts);
};
@@ -303,7 +303,7 @@ Instruction *IndVarSimplify::LinearFunctionTestReplace(Loop *L,
/// final value of any expressions that are recurrent in the loop, and
/// substitute the exit values from the loop into any instructions outside of
/// the loop that use the final values of the current expressions.
-void IndVarSimplify::RewriteLoopExitValues(Loop *L) {
+void IndVarSimplify::RewriteLoopExitValues(Loop *L, SCEV *IterationCount) {
BasicBlock *Preheader = L->getLoopPreheader();
// Scan all of the instructions in the loop, looking at those that have
@@ -321,7 +321,7 @@ void IndVarSimplify::RewriteLoopExitValues(Loop *L) {
BlockToInsertInto = Preheader;
BasicBlock::iterator InsertPt = BlockToInsertInto->getFirstNonPHI();
- bool HasConstantItCount = isa<SCEVConstant>(SE->getIterationCount(L));
+ bool HasConstantItCount = isa<SCEVConstant>(IterationCount);
std::set<Instruction*> InstructionsToDelete;
std::map<Instruction*, Value*> ExitValues;
@@ -458,7 +458,7 @@ bool IndVarSimplify::runOnLoop(Loop *L, LPPassManager &LPM) {
//
SCEVHandle IterationCount = SE->getIterationCount(L);
if (!isa<SCEVCouldNotCompute>(IterationCount))
- RewriteLoopExitValues(L);
+ RewriteLoopExitValues(L, IterationCount);
// Next, analyze all of the induction variables in the loop, canonicalizing
// auxillary induction variables.