From 5c7bb0a38ae0ca8c0773844cc138d53429291f4b Mon Sep 17 00:00:00 2001 From: Craig Topper Date: Thu, 11 May 2017 07:10:43 +0000 Subject: [PATCH] [APInt] Remove an unneeded extra temporary APInt from toString. Turns out udivrem can write its output to the same location as one of its inputs so the extra temporary isn't needed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@302772 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Support/APInt.cpp | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/lib/Support/APInt.cpp b/lib/Support/APInt.cpp index d000ae82e07..6b01c9bb277 100644 --- a/lib/Support/APInt.cpp +++ b/lib/Support/APInt.cpp @@ -1953,15 +1953,11 @@ void APInt::toString(SmallVectorImpl &Str, unsigned Radix, } else { APInt divisor(Tmp.getBitWidth(), Radix); APInt APdigit; - APInt tmp2(Tmp.getBitWidth(), 0); while (Tmp.getBoolValue()) { - udivrem(Tmp, divisor, tmp2, APdigit); + udivrem(Tmp, divisor, Tmp, APdigit); unsigned Digit = (unsigned)APdigit.getZExtValue(); assert(Digit < Radix && "divide failed"); Str.push_back(Digits[Digit]); - // Move the quotient into Tmp and move the old allocation of Tmp into - // tmp2 to be used on the next loop iteration. - std::swap(Tmp, tmp2); } } -- 2.50.1