diff options
author | Dan Gohman <gohman@apple.com> | 2009-04-16 15:47:35 +0000 |
---|---|---|
committer | Dan Gohman <gohman@apple.com> | 2009-04-16 15:47:35 +0000 |
commit | 56b14e3eebd0fbc6ad88261709355879e4317115 (patch) | |
tree | 83f742499593662a522a91d5845a32d61b4e328d /lib/Transforms | |
parent | faa55f17b8fd2071b69b1104f5921f02d2f31ecc (diff) | |
download | external_llvm-56b14e3eebd0fbc6ad88261709355879e4317115.zip external_llvm-56b14e3eebd0fbc6ad88261709355879e4317115.tar.gz external_llvm-56b14e3eebd0fbc6ad88261709355879e4317115.tar.bz2 |
Use a SCEV expression cast instead of immediately inserting a
new instruction with SCEVExpander::InsertCastOfTo.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69290 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms')
-rw-r--r-- | lib/Transforms/Scalar/LoopStrengthReduce.cpp | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/lib/Transforms/Scalar/LoopStrengthReduce.cpp b/lib/Transforms/Scalar/LoopStrengthReduce.cpp index a542ca0..74b0d5a 100644 --- a/lib/Transforms/Scalar/LoopStrengthReduce.cpp +++ b/lib/Transforms/Scalar/LoopStrengthReduce.cpp @@ -1836,17 +1836,17 @@ void LoopStrengthReduce::StrengthReduceStridedIVUsers(const SCEVHandle &Stride, if (L->contains(User.Inst->getParent())) User.Inst->moveBefore(LatchBlock->getTerminator()); } - if (RewriteOp->getType() != ReplacedTy) { - Instruction::CastOps opcode = - CastInst::getCastOpcode(RewriteOp, false, ReplacedTy, false); - assert(opcode != Instruction::SExt && - opcode != Instruction::ZExt && - "Unexpected widening cast!"); - RewriteOp = SCEVExpander::InsertCastOfTo(opcode, RewriteOp, ReplacedTy); - } SCEVHandle RewriteExpr = SE->getUnknown(RewriteOp); + if (TD->getTypeSizeInBits(RewriteOp->getType()) != + TD->getTypeSizeInBits(ReplacedTy)) { + assert(TD->getTypeSizeInBits(RewriteOp->getType()) > + TD->getTypeSizeInBits(ReplacedTy) && + "Unexpected widening cast!"); + RewriteExpr = SE->getTruncateExpr(RewriteExpr, ReplacedTy); + } + // If we had to insert new instructions for RewriteOp, we have to // consider that they may not have been able to end up immediately // next to RewriteOp, because non-PHI instructions may never precede |