diff options
author | David Majnemer <david.majnemer@gmail.com> | 2016-06-24 21:15:36 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2016-06-24 21:15:36 +0000 |
commit | 87d5e72f1d1ec87799ea1966eb189931b17c2006 (patch) | |
tree | 640da1281f74383efba7544d5dc61c900628e4fa | |
parent | ab8ffadc13b59c92cf8f4983c9ce1c4656968b08 (diff) |
[APInt] Don't shift into the sign bit
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273727 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Support/APInt.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/Support/APInt.cpp b/lib/Support/APInt.cpp index 348f807c91a..9eed2147746 100644 --- a/lib/Support/APInt.cpp +++ b/lib/Support/APInt.cpp @@ -880,7 +880,7 @@ double APInt::roundToDouble(bool isSigned) const { // It is wrong to optimize getWord(0) to VAL; there might be more than one word. if (isSingleWord() || getActiveBits() <= APINT_BITS_PER_WORD) { if (isSigned) { - int64_t sext = (int64_t(getWord(0)) << (64-BitWidth)) >> (64-BitWidth); + int64_t sext = SignExtend64(getWord(0), BitWidth); return double(sext); } else return double(getWord(0)); |