summaryrefslogtreecommitdiff
path: root/include/llvm/ADT/APInt.h
diff options
context:
space:
mode:
authorBenjamin Kramer <benny.kra@googlemail.com>2011-11-28 16:56:38 +0000
committerBenjamin Kramer <benny.kra@googlemail.com>2011-11-28 16:56:38 +0000
commit39a2eb7dea034820eb4b93b2361ae307b0cee5f2 (patch)
treef59232f77c134e4c537f880cd5df913034833b79 /include/llvm/ADT/APInt.h
parent64acc57b23530aee37d224f48293cb764c4290a8 (diff)
downloadllvm-39a2eb7dea034820eb4b93b2361ae307b0cee5f2.tar.gz
llvm-39a2eb7dea034820eb4b93b2361ae307b0cee5f2.tar.bz2
llvm-39a2eb7dea034820eb4b93b2361ae307b0cee5f2.tar.xz
Handle more cases in APInt::getLowBitsSet's fast path.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145249 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/ADT/APInt.h')
-rw-r--r--include/llvm/ADT/APInt.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/include/llvm/ADT/APInt.h b/include/llvm/ADT/APInt.h
index 707e0dbb6b..78119bce2a 100644
--- a/include/llvm/ADT/APInt.h
+++ b/include/llvm/ADT/APInt.h
@@ -497,8 +497,8 @@ public:
if (loBitsSet == APINT_BITS_PER_WORD)
return APInt(numBits, -1ULL);
// For small values, return quickly.
- if (numBits < APINT_BITS_PER_WORD)
- return APInt(numBits, (1ULL << loBitsSet) - 1);
+ if (loBitsSet <= APINT_BITS_PER_WORD)
+ return APInt(numBits, -1ULL >> (APINT_BITS_PER_WORD - loBitsSet));
return getAllOnesValue(numBits).lshr(numBits - loBitsSet);
}