> 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 llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits