From ae65d0e330f4a55b2cebf12785423c64b3f5186e Mon Sep 17 00:00:00 2001 From: Dylan Noblesmith Date: Tue, 26 Aug 2014 02:03:33 +0000 Subject: [PATCH] Revert "Support/APFloat: unique_ptr-ify temp arrays" This reverts commit rr216359. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@216429 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Support/APFloat.cpp | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/lib/Support/APFloat.cpp b/lib/Support/APFloat.cpp index 4359061e433..7989e30afae 100644 --- a/lib/Support/APFloat.cpp +++ b/lib/Support/APFloat.cpp @@ -1722,8 +1722,7 @@ APFloat::remainder(const APFloat &rhs) return fs; int parts = partCount(); - auto XOwner = make_unique(parts); - auto x = XOwner.get(); + integerPart *x = new integerPart[parts]; bool ignored; fs = V.convertToInteger(x, parts * integerPartWidth, true, rmNearestTiesToEven, &ignored); @@ -1742,6 +1741,7 @@ APFloat::remainder(const APFloat &rhs) if (isZero()) sign = origSign; // IEEE754 requires this + delete[] x; return fs; } @@ -1762,8 +1762,7 @@ APFloat::mod(const APFloat &rhs, roundingMode rounding_mode) return fs; int parts = partCount(); - auto XOwner = make_unique(parts); - auto x = XOwner.get(); + integerPart *x = new integerPart[parts]; bool ignored; fs = V.convertToInteger(x, parts * integerPartWidth, true, rmTowardZero, &ignored); @@ -1782,6 +1781,7 @@ APFloat::mod(const APFloat &rhs, roundingMode rounding_mode) if (isZero()) sign = origSign; // IEEE754 requires this + delete[] x; } return fs; } @@ -2284,14 +2284,15 @@ APFloat::convertFromSignExtendedInteger(const integerPart *src, if (isSigned && APInt::tcExtractBit(src, srcCount * integerPartWidth - 1)) { - auto C = make_unique(srcCount); - auto copy = C.get(); + integerPart *copy; /* If we're signed and negative negate a copy. */ sign = true; + copy = new integerPart[srcCount]; APInt::tcAssign(copy, src, srcCount); APInt::tcNegate(copy, srcCount); status = convertFromUnsignedParts(copy, srcCount, rounding_mode); + delete [] copy; } else { sign = false; status = convertFromUnsignedParts(src, srcCount, rounding_mode); @@ -2544,6 +2545,7 @@ APFloat::convertFromDecimalString(StringRef str, roundingMode rounding_mode) /* Overflow and round. */ fs = handleOverflow(rounding_mode); } else { + integerPart *decSignificand; unsigned int partCount; /* A tight upper bound on number of bits required to hold an @@ -2552,8 +2554,7 @@ APFloat::convertFromDecimalString(StringRef str, roundingMode rounding_mode) tcMultiplyPart. */ partCount = static_cast(D.lastSigDigit - D.firstSigDigit) + 1; partCount = partCountForBits(1 + 196 * partCount / 59); - auto DecSignificandOwner = make_unique(partCount + 1); - auto decSignificand = DecSignificandOwner.get(); + decSignificand = new integerPart[partCount + 1]; partCount = 0; /* Convert to binary efficiently - we do almost all multiplication @@ -2594,6 +2595,8 @@ APFloat::convertFromDecimalString(StringRef str, roundingMode rounding_mode) category = fcNormal; fs = roundSignificandWithExponent(decSignificand, partCount, D.exponent, rounding_mode); + + delete [] decSignificand; } return fs; -- 2.34.1