aboutsummaryrefslogtreecommitdiff
path: root/newlib/libc/stdlib/strtod.c
diff options
context:
space:
mode:
Diffstat (limited to 'newlib/libc/stdlib/strtod.c')
-rw-r--r--newlib/libc/stdlib/strtod.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/newlib/libc/stdlib/strtod.c b/newlib/libc/stdlib/strtod.c
index 6323f0b..e206d05 100644
--- a/newlib/libc/stdlib/strtod.c
+++ b/newlib/libc/stdlib/strtod.c
@@ -386,7 +386,9 @@ _DEFUN (_strtod_r, (ptr, s00, se),
if (!match(&s,"inity"))
++s;
dword0(rv) = 0x7ff00000;
+#ifndef _DOUBLE_IS_32BITS
dword1(rv) = 0;
+#endif /*!_DOUBLE_IS_32BITS*/
goto ret;
}
break;
@@ -398,12 +400,16 @@ _DEFUN (_strtod_r, (ptr, s00, se),
&& hexnan(&s, &fpinan, bits)
== STRTOG_NaNbits) {
dword0(rv) = 0x7ff00000 | bits[1];
+#ifndef _DOUBLE_IS_32BITS
dword1(rv) = bits[0];
+#endif /*!_DOUBLE_IS_32BITS*/
}
else {
#endif
dword0(rv) = NAN_WORD0;
+#ifndef _DOUBLE_IS_32BITS
dword1(rv) = NAN_WORD1;
+#endif /*!_DOUBLE_IS_32BITS*/
#ifndef No_Hex_NaN
}
#endif
@@ -627,8 +633,8 @@ _DEFUN (_strtod_r, (ptr, s00, se),
#ifndef _DOUBLE_IS_32BITS
else
dword1(rv) &= 0xffffffff << j;
- }
#endif /*!_DOUBLE_IS_32BITS*/
+ }
#else
for(j = 0; e1 > 1; j++, e1 >>= 1)
if (e1 & 1)
@@ -1109,7 +1115,9 @@ _DEFUN (_strtod_r, (ptr, s00, se),
if (inexact) {
if (!oldinexact) {
dword0(rv0) = Exp_1 + (70 << Exp_shift);
+#ifndef _DOUBLE_IS_32BITS
dword1(rv0) = 0;
+#endif /*!_DOUBLE_IS_32BITS*/
dval(rv0) += 1.;
}
}
@@ -1119,7 +1127,9 @@ _DEFUN (_strtod_r, (ptr, s00, se),
#ifdef Avoid_Underflow
if (scale) {
dword0(rv0) = Exp_1 - 2*P*Exp_msk1;
+#ifndef _DOUBLE_IS_32BITS
dword1(rv0) = 0;
+#endif /*!_DOUBLE_IS_32BITS*/
dval(rv) *= dval(rv0);
#ifndef NO_ERRNO
/* try to avoid the bug of testing an 8087 register value */