[llvm-commits] CVS: llvm/lib/Analysis/BasicAliasAnalysis.cpp ConstantRange.cpp ScalarEvolution.cpp ScalarEvolutionExpander.cpp
Chris Lattner
clattner at apple.com
Tue Dec 12 21:55:32 PST 2006
> --- llvm/lib/Analysis/ScalarEvolutionExpander.cpp:1.8 Wed Dec 6
> 19:30:31 2006
> +++ llvm/lib/Analysis/ScalarEvolutionExpander.cpp Tue Dec 12
> 17:36:14 2006
> @@ -20,9 +20,27 @@
> /// InsertCastOfTo - Insert a cast of V to the specified type,
> doing what
> /// we can to share the casts.
> Value *SCEVExpander::InsertCastOfTo(Value *V, const Type *Ty) {
> + // Compute the Cast opcode to use
> + Instruction::CastOps opcode = Instruction::BitCast;
> + if (Ty->isIntegral()) {
> + if (V->getType()->getTypeID() == Type::PointerTyID)
> + opcode = Instruction::PtrToInt;
> + else {
> + unsigned SrcBits = V->getType()->getPrimitiveSizeInBits();
> + unsigned DstBits = Ty->getPrimitiveSizeInBits();
> + opcode = (SrcBits > DstBits ? Instruction::Trunc :
> + (SrcBits == DstBits ? Instruction::BitCast :
> + (V->getType()->isSigned() ? Instruction::SExt :
> + Instruction::ZExt)));
> + }
This code is not good, you shouldn't look at the type of the value.
InsertCastOfTo is called in two places: LoopStrengthReduce.cpp:1124
(in which case it is a truncate, maybe a bitcast) and at :213. The
call in 213 is in getCastedVersionOf, which is called at :256 (in
which case it should be ptrtoint) and :271 (in which case it should
be sext or bitcast). Please pass down the correct opcode from these
callers.
-Chris
More information about the llvm-commits
mailing list