On Mar 28, 2007, at 6:57 PM, Zhou Sheng wrote: > @@ -540,8 +540,10 @@ > if (I->getOpcode() == Instruction::Shl) > if ((CST = dyn_cast<ConstantInt>(I->getOperand(1)))) { > // The multiplier is really 1 << CST. > - Constant *One = ConstantInt::get(V->getType(), 1); > - CST = cast<ConstantInt>(ConstantExpr::getShl(One, CST)); > + uint32_t BitWidth = cast<IntegerType>(V->getType())- > >getBitWidth(); > + uint32_t CSTVal = CST->getValue().getActiveBits() > 64 ? > + BitWidth : CST->getZExtValue(); > + CST = ConstantInt::get(APInt(BitWidth, 1).shl(CSTVal)); > return I->getOperand(0); > } > }
I don't understand the logic here for the >64 active bits case. Is the idea that the operation is undefined anyway? -Chris _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits