From 71bccd3e0e5d79a11533bc806ca63b0d737ed1b3 Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Thu, 16 Apr 2009 15:47:35 +0000 Subject: Use a SCEV expression cast instead of immediately inserting a new instruction with SCEVExpander::InsertCastOfTo. llvm-svn: 69290 --- llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'llvm/lib/Transforms') 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 -- cgit v1.2.3