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 | 71bccd3e0e5d79a11533bc806ca63b0d737ed1b3 (patch) | |
| tree | 35f49db043b16d3681aa766a828821e877ef867a /llvm/lib/Transforms | |
| parent | 426b5cf16ae97e1cb9c4b459861e35c88908d50e (diff) | |
| download | bcm5719-llvm-71bccd3e0e5d79a11533bc806ca63b0d737ed1b3.tar.gz bcm5719-llvm-71bccd3e0e5d79a11533bc806ca63b0d737ed1b3.zip | |
Use a SCEV expression cast instead of immediately inserting a
new instruction with SCEVExpander::InsertCastOfTo.
llvm-svn: 69290
Diffstat (limited to 'llvm/lib/Transforms')
| -rw-r--r-- | llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp | 16 | 
1 files changed, 8 insertions, 8 deletions
| diff --git a/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp b/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp index a542ca02a21..74b0d5a606c 100644 --- a/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp +++ b/llvm/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 | 

