mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-01 00:33:09 +00:00
[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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187313 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
7ffc854002
commit
060d34b1cf
@ -778,6 +778,7 @@ APFloat::bitwiseIsEqual(const APFloat &rhs) const {
|
||||
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(StringRef s, roundingMode rounding_mode)
|
||||
{
|
||||
lostFraction lost_fraction = lfExactlyZero;
|
||||
|
||||
category = fcNormal;
|
||||
zeroSignificand();
|
||||
exponent = 0;
|
||||
category = fcNormal;
|
||||
|
||||
integerPart *significand = significandParts();
|
||||
unsigned partsCount = partCount();
|
||||
@ -2512,6 +2512,7 @@ APFloat::convertFromDecimalString(StringRef str, roundingMode rounding_mode)
|
||||
(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(const fltSemantics &Sem, bool Negative) {
|
||||
// exponent = 0..0
|
||||
// significand = 10..0
|
||||
|
||||
Val.category = fcNormal;
|
||||
Val.zeroSignificand();
|
||||
Val.sign = Negative;
|
||||
Val.exponent = Sem.minExponent;
|
||||
|
Loading…
Reference in New Issue
Block a user