Fix an assertion introduced by my last change to the toString method. We
authorReid Spencer <rspencer@reidspencer.com>
Sat, 19 May 2007 00:29:55 +0000 (00:29 +0000)
committerReid Spencer <rspencer@reidspencer.com>
Sat, 19 May 2007 00:29:55 +0000 (00:29 +0000)
can't use getZExtValue() to extract the low order bits for each digit.
Instead, we need to access the low order word directly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37242 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Support/APInt.cpp

index 49945d84978c87f4b682569c6f5aff7ba1bffb7f..267aaf81d449bf8dd0cb186a3ed0eaf66d442547 100644 (file)
@@ -1962,9 +1962,9 @@ std::string APInt::toString(uint8_t radix, bool wantSigned) const {
       uint64_t mask = radix - 1;
       APInt zero(tmp.getBitWidth(), 0);
       while (tmp.ne(zero)) {
-        unsigned digit = tmp.getZExtValue() & mask;
-        tmp = tmp.lshr(shift);
+        unsigned digit = (tmp.isSingleWord() ? tmp.VAL : tmp.pVal[0]) & mask;
         result.insert(insert_at, digits[digit]);
+        tmp = tmp.lshr(shift);
       }
     }
     return result;