[llvm] r187313 - [APFloat] Move setting fcNormal in zeroSignificand() to calling code.
Chandler Carruth
chandlerc at google.com
Sat Jul 27 15:34:50 PDT 2013
For this and some of the other APFloat changes, I would really like to see
unit tests. It seems especially important given the fragility of the
APFloat class.
On Jul 27, 2013 2:53 PM, "Michael Gottesman" <mgottesman at apple.com> wrote:
> Author: mgottesman
> Date: Sat Jul 27 16:49:21 2013
> New Revision: 187313
>
> URL: http://llvm.org/viewvc/llvm-project?rev=187313&view=rev
> Log:
> [APFloat] Move setting fcNormal in zeroSignificand() to calling code.
>
> Zeroing the significand of a floating point number does not necessarily
> cause a
> floating point number to become finite non zero. For instance, if one has
> a NaN,
> zeroing the significand will cause it to become +/- infinity.
>
> Modified:
> llvm/trunk/lib/Support/APFloat.cpp
>
> Modified: llvm/trunk/lib/Support/APFloat.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Support/APFloat.cpp?rev=187313&r1=187312&r2=187313&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Support/APFloat.cpp (original)
> +++ llvm/trunk/lib/Support/APFloat.cpp Sat Jul 27 16:49:21 2013
> @@ -778,6 +778,7 @@ APFloat::bitwiseIsEqual(const APFloat &r
> APFloat::APFloat(const fltSemantics &ourSemantics, integerPart value) {
> initialize(&ourSemantics);
> sign = 0;
> + category = fcNormal;
> zeroSignificand();
> exponent = ourSemantics.precision - 1;
> significandParts()[0] = value;
> @@ -845,7 +846,6 @@ APFloat::significandParts()
> void
> APFloat::zeroSignificand()
> {
> - category = fcNormal;
> APInt::tcSet(significandParts(), 0, partCount());
> }
>
> @@ -2301,9 +2301,9 @@ APFloat::convertFromHexadecimalString(St
> {
> lostFraction lost_fraction = lfExactlyZero;
>
> + category = fcNormal;
> zeroSignificand();
> exponent = 0;
> - category = fcNormal;
>
> integerPart *significand = significandParts();
> unsigned partsCount = partCount();
> @@ -2512,6 +2512,7 @@ APFloat::convertFromDecimalString(String
> (D.normalizedExponent + 1) * 28738 <=
> 8651 * (semantics->minExponent - (int)
> semantics->precision)) {
> /* Underflow to zero and round. */
> + category = fcNormal;
> zeroSignificand();
> fs = normalize(rounding_mode, lfLessThanHalf);
>
> @@ -3398,6 +3399,7 @@ APFloat APFloat::getSmallestNormalized(c
> // exponent = 0..0
> // significand = 10..0
>
> + Val.category = fcNormal;
> Val.zeroSignificand();
> Val.sign = Negative;
> Val.exponent = Sem.minExponent;
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20130727/a066566f/attachment.html>
More information about the llvm-commits
mailing list