> Index: llvm/lib/Transforms/Scalar/InstructionCombining.cpp
> diff -u llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.688
> llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.689
> --- llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.688 Sun
> Mar 25 00:33:51 2007
> +++ llvm/lib/Transforms/Scalar/InstructionCombining.cpp Sun Mar 25
> 14:55:33 2007
> @@ -540,9 +540,8 @@
> if (I->getOpcode() == Instruction::Shl)
> if ((CST = dyn_cast<ConstantInt>(I->getOperand(1)))) {
> // The multiplier is really 1 << CST.
> - APInt Multiplier(V->getType()->getPrimitiveSizeInBits(),
> 0);
> - Multiplier.set(CST->getZExtValue()); // set bit is == 1
> << CST
> - CST = ConstantInt::get(Multiplier);
> + Constant *One = ConstantInt::get(V->getType(), 1);
> + CST = cast<ConstantInt>(ConstantExpr::getShl(One, CST));
This is doing arithmetic with constant expr :(. Why not something like:
ConstantInt::get(APInt(bitwidth, 1).shl(CST->getValue()))
or something?
-Chris
_______________________________________________
llvm-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits