summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/Scalar
diff options
context:
space:
mode:
authorEvan Cheng <evan.cheng@apple.com>2006-06-09 00:12:42 +0000
committerEvan Cheng <evan.cheng@apple.com>2006-06-09 00:12:42 +0000
commit398f70292c4140b27f0799e89e2c34a38c2d9f7d (patch)
treed92b8645ed9f58a26693aa0d64930712119eecd7 /llvm/lib/Transforms/Scalar
parent5d029264ec5a89d3b757e9af80039b444b603555 (diff)
downloadbcm5719-llvm-398f70292c4140b27f0799e89e2c34a38c2d9f7d.tar.gz
bcm5719-llvm-398f70292c4140b27f0799e89e2c34a38c2d9f7d.zip
RewriteExpr, either the new PHI node of induction variable or the
post-increment value, should be first cast to the appropriated type (to the type of the common expr). Otherwise, the rewrite of a use based on (common + iv) may end up with an incorrect type. llvm-svn: 28735
Diffstat (limited to 'llvm/lib/Transforms/Scalar')
-rw-r--r--llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp b/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp
index d3ac797651f..6e4460b509e 100644
--- a/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp
+++ b/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp
@@ -1074,6 +1074,9 @@ void LoopStrengthReduce::StrengthReduceStridedIVUsers(const SCEVHandle &Stride,
if (L->contains(User.Inst->getParent()))
User.Inst->moveBefore(LatchBlock->getTerminator());
}
+ if (RewriteOp->getType() != ReplacedTy)
+ RewriteOp = SCEVExpander::InsertCastOfTo(RewriteOp, ReplacedTy);
+
SCEVHandle RewriteExpr = SCEVUnknown::get(RewriteOp);
// Clear the SCEVExpander's expression map so that we are guaranteed
OpenPOWER on IntegriCloud