Make it illegal to set 0 bits in getHighBitsSet and getLowBitsSet. For that
they should have used the uint64_t constructor. This avoids causing undefined results via shifts by the word size when the bit width is an exact multiple of the word size. llvm-svn: 35313
This commit is contained in:
parent
790631ff2d
commit
42fbb4fbe3
@ -355,6 +355,7 @@ public:
|
||||
/// @brief Get a value with high bits set
|
||||
static APInt getHighBitsSet(uint32_t numBits, uint32_t hiBitsSet) {
|
||||
assert(hiBitsSet <= numBits && "Too many bits to set!");
|
||||
assert(hiBitsSet > 0 && "You must set SOME bits");
|
||||
uint32_t shiftAmt = numBits - hiBitsSet;
|
||||
// For small values, return quickly
|
||||
if (numBits <= APINT_BITS_PER_WORD)
|
||||
@ -368,6 +369,7 @@ public:
|
||||
/// @brief Get a value with low bits set
|
||||
static APInt getLowBitsSet(uint32_t numBits, uint32_t loBitsSet) {
|
||||
assert(loBitsSet <= numBits && "Too many bits to set!");
|
||||
assert(loBitsSet > 0 && "You must set SOME bits");
|
||||
uint32_t shiftAmt = numBits - loBitsSet;
|
||||
// For small values, return quickly
|
||||
if (numBits <= APINT_BITS_PER_WORD)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user