diff --git a/base/third_party/dmg_fp/dtoa.cc b/base/third_party/dmg_fp/dtoa.cc index 3312fa4..502c16c 100644 --- a/base/third_party/dmg_fp/dtoa.cc +++ b/base/third_party/dmg_fp/dtoa.cc @@ -548,8 +548,10 @@ Balloc ACQUIRE_DTOA_LOCK(0); /* The k > Kmax case does not need ACQUIRE_DTOA_LOCK(0), */ /* but this case seems very unlikely. */ - if (k <= Kmax && (rv = freelist[k])) + if (k <= Kmax && freelist[k]) { + rv = freelist[k]; freelist[k] = rv->next; + } else { x = 1 << k; #ifdef Omit_Private_Memory @@ -650,7 +652,7 @@ multadd Bfree(b); b = b1; } - b->x[wds++] = carry; + b->x[wds++] = (ULong)carry; b->wds = wds; } return b; @@ -834,7 +836,8 @@ mult xc0 = c->x; #ifdef ULLong for(; xb < xbe; xc0++) { - if ((y = *xb++)) { + y = *xb++; + if (y) { x = xa; xc = xc0; carry = 0; @@ -844,7 +847,7 @@ mult *xc++ = z & FFFFFFFF; } while(x < xae); - *xc = carry; + *xc = (ULong)carry; } } #else @@ -916,16 +919,19 @@ pow5mult int i; static int p05[3] = { 5, 25, 125 }; - if ((i = k & 3)) + i = k & 3; + if (i) b = multadd(b, p05[i-1], 0); if (!(k >>= 2)) return b; - if (!(p5 = p5s)) { + p5 = p5s; + if (!p5) { /* first time */ #ifdef MULTIPLE_THREADS ACQUIRE_DTOA_LOCK(1); - if (!(p5 = p5s)) { + p5 = p5s; + if (!p5) { p5 = p5s = i2b(625); p5->next = 0; } @@ -943,10 +949,12 @@ pow5mult } if (!(k >>= 1)) break; - if (!(p51 = p5->next)) { + p51 = p5->next; + if (!p51) { #ifdef MULTIPLE_THREADS ACQUIRE_DTOA_LOCK(1); - if (!(p51 = p5->next)) { + p51 = p5->next; + if (!p51) { p51 = p5->next = mult(p5,p5); p51->next = 0; } @@ -997,7 +1005,8 @@ lshift z = *x++ >> k1; } while(x < xe); - if ((*x1 = z)) + *x1 = z; + if (*x1) ++n1; } #else @@ -1299,21 +1308,25 @@ d2b z |= Exp_msk11; #endif #else - if ((de = (int)(d0 >> Exp_shift))) + de = (int)(d0 >> Exp_shift); + if (de) z |= Exp_msk1; #endif #ifdef Pack_32 - if ((y = d1)) { - if ((k = lo0bits(&y))) { + y = d1; + if (y) { + k = lo0bits(&y); + if (k) { x[0] = y | z << (32 - k); z >>= k; } else x[0] = y; + x[1] = z; + b->wds = x[1] ? 2 : 1; #ifndef Sudden_Underflow - i = + i = b->wds; #endif - b->wds = (x[1] = z) ? 2 : 1; } else { k = lo0bits(&z); @@ -1498,7 +1511,7 @@ htinit(unsigned char *h, unsigned char *s, int inc) { int i, j; for(i = 0; (j = s[i]) !=0; i++) - h[j] = i + inc; + h[j] = (unsigned char)(i + inc); } static void @@ -1536,7 +1549,7 @@ match int c, d; CONST char *s = *sp; - while((d = *t++)) { + for(d = *t++; d; d = *t++) { if ((c = *++s) >= 'A' && c <= 'Z') c += 'a' - 'A'; if (c != d) @@ -1566,12 +1579,13 @@ hexnan udx0 = 1; s = *sp; /* allow optional initial 0x or 0X */ - while((c = *(CONST unsigned char*)(s+1)) && c <= ' ') + for(c = *(CONST unsigned char*)(s+1); c && c <= ' '; c = *(CONST unsigned char*)(s+1)) ++s; if (s[1] == '0' && (s[2] == 'x' || s[2] == 'X')) s += 2; - while((c = *(CONST unsigned char*)++s)) { - if ((c1 = hexdig[c])) + for(c = *(CONST unsigned char*)++s; c; c = *(CONST unsigned char*)++s) { + c1 = hexdig[c]; + if (c1) c = c1 & 0xf; else if (c <= ' ') { if (udx0 && havedig) { @@ -1594,7 +1608,8 @@ hexnan *sp = s + 1; break; } - } while((c = *++s)); + c = *++s; + } while(c); break; } #endif @@ -2328,7 +2343,8 @@ bigcomp /* Now b/d = exactly half-way between the two floating-point values */ /* on either side of the input string. Compute first digit of b/d. */ - if (!(dig = quorem(b,d))) { + dig = quorem(b,d); + if (!dig) { b = multadd(b, 10, 0); /* very unlikely */ dig = quorem(b,d); } @@ -2336,7 +2352,8 @@ bigcomp /* Compare b/d with s0 */ for(i = 0; i < nd0; ) { - if ((dd = s0[i++] - '0' - dig)) + dd = s0[i++] - '0' - dig; + if (dd) goto ret; if (!b->x[0] && b->wds == 1) { if (i < nd) @@ -2347,7 +2364,8 @@ bigcomp dig = quorem(b,d); } for(j = bc->dp1; i++ < nd;) { - if ((dd = s0[j++] - '0' - dig)) + dd = s0[j++] - '0' - dig; + if (dd) goto ret; if (!b->x[0] && b->wds == 1) { if (i < nd) @@ -2747,7 +2765,8 @@ strtod /* Get starting approximation = rv * 10**e1 */ if (e1 > 0) { - if ((i = e1 & 15)) + i = e1 & 15; + if (i) dval(&rv) *= tens[i]; if (e1 &= ~15) { if (e1 > DBL_MAX_10_EXP) { @@ -2805,7 +2824,8 @@ strtod } else if (e1 < 0) { e1 = -e1; - if ((i = e1 & 15)) + i = e1 & 15; + if (i) dval(&rv) /= tens[i]; if (e1 >>= 4) { if (e1 >= 1 << n_bigtens) @@ -3283,7 +3303,7 @@ strtod #ifdef Avoid_Underflow if (bc.scale && y <= 2*P*Exp_msk1) { if (aadj <= 0x7fffffff) { - if ((z = aadj) <= 0) + if ((z = (ULong)aadj) <= 0) z = 1; aadj = z; aadj1 = bc.dsign ? aadj : -aadj; @@ -3456,7 +3476,7 @@ nrv_alloc(CONST char *s, char **rve, int n) char *rv, *t; t = rv = rv_alloc(n); - while((*t = *s++)) t++; + for(*t = *s++; *t; *t = *s++) t++; if (rve) *rve = t; return rv; @@ -3569,7 +3589,7 @@ dtoa int denorm; ULong x; #endif - Bigint *b, *b1, *delta, *mlo, *mhi, *S; + Bigint *b, *b1, *delta, *mlo = NULL, *mhi, *S; U d2, eps, u; double ds; char *s, *s0; @@ -3645,10 +3665,9 @@ dtoa #endif b = d2b(&u, &be, &bbits); -#ifdef Sudden_Underflow i = (int)(word0(&u) >> Exp_shift1 & (Exp_mask>>Exp_shift1)); -#else - if ((i = (int)(word0(&u) >> Exp_shift1 & (Exp_mask>>Exp_shift1)))) { +#ifndef Sudden_Underflow + if (i) { #endif dval(&d2) = dval(&u); word0(&d2) &= Frac_mask1; @@ -3803,13 +3822,16 @@ dtoa } dval(&u) /= ds; } - else if ((j1 = -k)) { - dval(&u) *= tens[j1 & 0xf]; - for(j = j1 >> 4; j; j >>= 1, i++) - if (j & 1) { - ieps++; - dval(&u) *= bigtens[i]; - } + else { + j1 = -k; + if (j1) { + dval(&u) *= tens[j1 & 0xf]; + for(j = j1 >> 4; j; j >>= 1, i++) + if (j & 1) { + ieps++; + dval(&u) *= bigtens[i]; + } + } } if (k_check && dval(&u) < 1. && ilim > 0) { if (ilim1 <= 0) @@ -3837,9 +3859,9 @@ dtoa */ dval(&eps) = 0.5/tens[ilim-1] - dval(&eps); for(i = 0;;) { - L = dval(&u); + L = (long)dval(&u); dval(&u) -= L; - *s++ = '0' + (int)L; + *s++ = '0' + (char)L; if (dval(&u) < dval(&eps)) goto ret1; if (1. - dval(&u) < dval(&eps)) @@ -3858,7 +3880,7 @@ dtoa L = (Long)(dval(&u)); if (!(dval(&u) -= L)) ilim = i; - *s++ = '0' + (int)L; + *s++ = '0' + (char)L; if (i == ilim) { if (dval(&u) > 0.5 + dval(&eps)) goto bump_up; @@ -3901,7 +3923,7 @@ dtoa dval(&u) += ds; } #endif - *s++ = '0' + (int)L; + *s++ = '0' + (char)L; if (!dval(&u)) { #ifdef SET_INEXACT inexact = 0; @@ -3964,7 +3986,8 @@ dtoa Bfree(b); b = b1; } - if ((j = b5 - m5)) + j = b5 - m5; + if (j) b = pow5mult(b, j); } else @@ -4002,7 +4025,8 @@ dtoa * can do shifts and ors to compute the numerator for q. */ #ifdef Pack_32 - if ((i = ((s5 ? 32 - hi0bits(S->x[S->wds-1]) : 1) + s2) & 0x1f)) + i = ((s5 ? 32 - hi0bits(S->x[S->wds-1]) : 1) + s2) & 0x1f; + if (i) i = 32 - i; #define iInc 28 #else @@ -4077,7 +4101,7 @@ dtoa else if (!b->x[0] && b->wds <= 1) inexact = 0; #endif - *s++ = dig; + *s++ = (char)dig; goto ret; } #endif @@ -4107,7 +4131,7 @@ dtoa goto round_9_up; } accept_dig: - *s++ = dig; + *s++ = (char)dig; goto ret; } if (j1 > 0) { @@ -4120,13 +4144,13 @@ dtoa *s++ = '9'; goto roundoff; } - *s++ = dig + 1; + *s++ = (char)dig + 1; goto ret; } #ifdef Honor_FLT_ROUNDS keep_dig: #endif - *s++ = dig; + *s++ = (char)dig; if (i == ilim) break; b = multadd(b, 10, 0); @@ -4140,7 +4164,8 @@ dtoa } else for(i = 1;; i++) { - *s++ = dig = quorem(b,S) + '0'; + dig = quorem(b,S) + '0'; + *s++ = (char)dig; if (!b->x[0] && b->wds <= 1) { #ifdef SET_INEXACT inexact = 0; diff --git a/base/third_party/dmg_fp/g_fmt.cc b/base/third_party/dmg_fp/g_fmt.cc index d864eb7..bfa358d 100644 --- a/base/third_party/dmg_fp/g_fmt.cc +++ b/base/third_party/dmg_fp/g_fmt.cc @@ -46,14 +46,14 @@ g_fmt(register char *b, double x) if (sign) *b++ = '-'; if (decpt == 9999) /* Infinity or Nan */ { - while((*b++ = *s++)) {} + for(*b = *s++; *b++; *b = *s++) {} goto done0; } if (decpt <= -4 || decpt > se - s + 5) { *b++ = *s++; if (*s) { *b++ = '.'; - while((*b = *s++)) + for(*b = *s++; *b; *b = *s++) b++; } *b++ = 'e'; @@ -67,7 +67,7 @@ g_fmt(register char *b, double x) for(j = 2, k = 10; 10*k <= decpt; j++, k *= 10) {} for(;;) { i = decpt / k; - *b++ = i + '0'; + *b++ = (char)i + '0'; if (--j <= 0) break; decpt -= i*k; @@ -79,10 +79,10 @@ g_fmt(register char *b, double x) *b++ = '.'; for(; decpt < 0; decpt++) *b++ = '0'; - while((*b++ = *s++)) {} + for(*b = *s++; *b++; *b = *s++) {} } else { - while((*b = *s++)) { + for(*b = *s++; *b; *b = *s++) { b++; if (--decpt == 0 && *s) *b++ = '.';