================
@@ -2278,8 +2285,28 @@ void APInt::toString(SmallVectorImpl<char> &Str,
unsigned Radix, bool Signed,
}
} else {
int Pos = 0;
+ // The value of cutOffSize is not special, it is just a number of
+ // characters that gives us enough info without losing readability.
+ constexpr int cutOffSize = 20;
while (Tmp.getBoolValue()) {
uint64_t Digit;
+ if (truncate && Pos == cutOffSize) {
+ unsigned numDigits = (int32_t)(Tmp.logBase2()/log2(Radix))+1;
----------------
erichkeane wrote:
```suggestion
unsigned numDigits =
static_cast<int32_t>(Tmp.logBase2()/log2(Radix))+1);
```
ALSO: Why cast to int32, but then assign to an unsigned? Should we be doing
math as unsigned? or as signed?
Also, a comment on what this is doing could be helpful.
Also... is there value to pre-calculating `log2(Radix)` and keeping it
somewhere so we don't re-evaluate it every time? or is `log2` `pure`?
https://github.com/llvm/llvm-project/pull/145053
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits