Please just use uint64_t BitMask = Ty->getIntegerTypeMask(); Thanks,
-Chris On Jan 18, 2007, at 10:01 AM, Reid Spencer wrote: > > > Changes in directory llvm/lib/ExecutionEngine: > > ExecutionEngine.cpp updated: 1.99 -> 1.100 > --- > Log message: > > Fix a regression in the last patch. When constructing a BitMask, be > careful > not to overflow 64-bits and end up with a 0 mask. This caused i64 > values to > always be stored as 0 with lots of consequential damage to nightly > test. > > > --- > Diffs of the changes: (+4 -0) > > ExecutionEngine.cpp | 4 ++++ > 1 files changed, 4 insertions(+) > > > Index: llvm/lib/ExecutionEngine/ExecutionEngine.cpp > diff -u llvm/lib/ExecutionEngine/ExecutionEngine.cpp:1.99 llvm/lib/ > ExecutionEngine/ExecutionEngine.cpp:1.100 > --- llvm/lib/ExecutionEngine/ExecutionEngine.cpp:1.99 Wed Jan 17 > 19:24:02 2007 > +++ llvm/lib/ExecutionEngine/ExecutionEngine.cpp Thu Jan 18 > 12:01:32 2007 > @@ -457,6 +457,8 @@ > case Type::IntegerTyID: { > unsigned BitWidth = cast<IntegerType>(Ty)->getBitWidth(); > uint64_t BitMask = (1ull << BitWidth) - 1; > + if (BitWidth >= 64) > + BitMask = (uint64_t)-1; > GenericValue TmpVal = Val; > if (BitWidth <= 8) > Ptr->Untyped[0] = Val.Int8Val & BitMask; > @@ -513,6 +515,8 @@ > case Type::IntegerTyID: { > unsigned BitWidth = cast<IntegerType>(Ty)->getBitWidth(); > uint64_t BitMask = (1ull << BitWidth) - 1; > + if (BitWidth >= 64) > + BitMask = (uint64_t)-1; > GenericValue TmpVal = Val; > if (BitWidth <= 8) > Ptr->Untyped[0] = Val.Int8Val & BitMask; > > > > _______________________________________________ > llvm-commits mailing list > llvm-commits@cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits