diff options
author | pkasting@chromium.org <pkasting@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-07-10 08:04:42 +0000 |
---|---|---|
committer | pkasting@chromium.org <pkasting@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-07-10 08:04:42 +0000 |
commit | e283d027e305f681c490fc99d9eff452e9863eb8 (patch) | |
tree | f40843ac86de88a600ccd212ccdb29c9762bdebe /base/third_party | |
parent | 5e6204e6571b4f3c3449e0a26ab72bef727739b9 (diff) | |
download | chromium_src-e283d027e305f681c490fc99d9eff452e9863eb8.zip chromium_src-e283d027e305f681c490fc99d9eff452e9863eb8.tar.gz chromium_src-e283d027e305f681c490fc99d9eff452e9863eb8.tar.bz2 |
Fixes for re-enabling more MSVC level 4 warnings: base/third_party/dmg_fp/ edition
This contains fixes for the following sorts of issues:
* Assignment inside conditional
This updates the relevant .patch and README files, combining these fixes with
the previous set of MSVC warning fixes. This also removes the now-unused
vs2013-optimization.patch file.
BUG=81439
TEST=none
Review URL: https://codereview.chromium.org/385503002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@282280 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/third_party')
-rw-r--r-- | base/third_party/dmg_fp/README.chromium | 4 | ||||
-rw-r--r-- | base/third_party/dmg_fp/dtoa.cc | 96 | ||||
-rw-r--r-- | base/third_party/dmg_fp/g_fmt.cc | 8 | ||||
-rw-r--r-- | base/third_party/dmg_fp/msvc_warnings.patch | 298 | ||||
-rw-r--r-- | base/third_party/dmg_fp/vs2013-optimization.patch | 18 | ||||
-rw-r--r-- | base/third_party/dmg_fp/win_vs2012.patch | 13 |
6 files changed, 363 insertions, 74 deletions
diff --git a/base/third_party/dmg_fp/README.chromium b/base/third_party/dmg_fp/README.chromium index 33ab78b..4538b7e 100644 --- a/base/third_party/dmg_fp/README.chromium +++ b/base/third_party/dmg_fp/README.chromium @@ -17,6 +17,4 @@ List of changes made to original code: - made minor changes for -Wextra for Mac build, see mac_wextra.patch - crash fix for running with reduced CPU float precision, see float_precision_crash.patch and crbug.com/123157 - - Fix for 'warning C4703: potentially uninitialized local pointer variable' - in VS2012. - - Disable optimization on VS2013 pending fix of compiler optimization bug. + - fixed warnings under msvc, see msvc_warnings.patch
\ No newline at end of file diff --git a/base/third_party/dmg_fp/dtoa.cc b/base/third_party/dmg_fp/dtoa.cc index 4eb9f0e..7219624 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 @@ -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; @@ -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); @@ -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) @@ -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; @@ -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) @@ -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 diff --git a/base/third_party/dmg_fp/g_fmt.cc b/base/third_party/dmg_fp/g_fmt.cc index d864eb7..e2fb7bd 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'; @@ -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++ = '.'; diff --git a/base/third_party/dmg_fp/msvc_warnings.patch b/base/third_party/dmg_fp/msvc_warnings.patch new file mode 100644 index 0000000..9ad4761 --- /dev/null +++ b/base/third_party/dmg_fp/msvc_warnings.patch @@ -0,0 +1,298 @@ +Index: dtoa.cc +--- dtoa.cc (old copy) ++++ dtoa.cc (working copy) +@@ -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 +@@ -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; +@@ -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); +@@ -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) +@@ -3456,7 +3476,7 @@ nrv_alloc(CONST char *s, char **rve, int + 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) +@@ -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 +Index: g_fmt.cc +--- g_fmt.cc (old copy) ++++ g_fmt.cc (working copy) +@@ -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'; +@@ -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++ = '.'; diff --git a/base/third_party/dmg_fp/vs2013-optimization.patch b/base/third_party/dmg_fp/vs2013-optimization.patch deleted file mode 100644 index d91b370..0000000 --- a/base/third_party/dmg_fp/vs2013-optimization.patch +++ /dev/null @@ -1,18 +0,0 @@ -Index: base/third_party/dmg_fp/dtoa.cc -diff --git a/base/third_party/dmg_fp/dtoa.cc b/base/third_party/dmg_fp/dtoa.cc -index 4eb9f0efd94221b3ab95f84554bbc92f112bf973..b03ccff569f9403eb67a95737b0e19740e56ef33 100644 ---- a/base/third_party/dmg_fp/dtoa.cc -+++ b/base/third_party/dmg_fp/dtoa.cc -@@ -179,6 +179,12 @@ - * used for input more than STRTOD_DIGLIM digits long (default 40). - */ - -+#if defined _MSC_VER && _MSC_VER == 1800 -+// TODO(scottmg): VS2013 RC ICEs on a bunch of functions in this file. -+// This should be removed after RTM. See http://crbug.com/288948. -+#pragma optimize("", off) -+#endif -+ - #define IEEE_8087 - #define NO_HEX_FP - diff --git a/base/third_party/dmg_fp/win_vs2012.patch b/base/third_party/dmg_fp/win_vs2012.patch deleted file mode 100644 index f3f599c..0000000 --- a/base/third_party/dmg_fp/win_vs2012.patch +++ /dev/null @@ -1,13 +0,0 @@ -Index: dtoa.cc -=================================================================== ---- dtoa.cc (revision 161424) -+++ dtoa.cc (working copy) -@@ -3569,7 +3569,7 @@ - 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; |