summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2005-08-08 05:47:49 +0000
committerChris Lattner <sabre@nondot.org>2005-08-08 05:47:49 +0000
commitc70bbc0c410073f01f213ebf9a7d4180e99178c7 (patch)
treed65e6ec47c00a4088c15e782db07aab9617853f3 /llvm/lib/Transforms
parent03b6275fb8bc249ccbad7af6a4e7627df26f2ea9 (diff)
downloadbcm5719-llvm-c70bbc0c410073f01f213ebf9a7d4180e99178c7.tar.gz
bcm5719-llvm-c70bbc0c410073f01f213ebf9a7d4180e99178c7.zip
Implement LoopStrengthReduce/share_code_in_preheader.ll by having one
rewriter for all code inserted into the preheader, which is never flushed. llvm-svn: 22702
Diffstat (limited to 'llvm/lib/Transforms')
-rw-r--r--llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp b/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp
index cf974b8876e..f11976fe879 100644
--- a/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp
+++ b/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp
@@ -542,6 +542,8 @@ void LoopStrengthReduce::StrengthReduceStridedIVUsers(Value *Stride,
}
SCEVExpander Rewriter(*SE, *LI);
+ SCEVExpander PreheaderRewriter(*SE, *LI);
+
BasicBlock *Preheader = L->getLoopPreheader();
Instruction *PreInsertPt = Preheader->getTerminator();
Instruction *PhiInsertBefore = L->getHeader()->begin();
@@ -578,7 +580,8 @@ void LoopStrengthReduce::StrengthReduceStridedIVUsers(Value *Stride,
// Emit the initial base value into the loop preheader, and add it to the
// Phi node.
- Value *BaseV = Rewriter.expandCodeFor(Base, PreInsertPt, ReplacedTy);
+ Value *BaseV = PreheaderRewriter.expandCodeFor(Base, PreInsertPt,
+ ReplacedTy);
NewPHI->addIncoming(BaseV, Preheader);
// Emit the increment of the base value before the terminator of the loop
OpenPOWER on IntegriCloud