File icu-avoid-x87-excess-precision.diff of Package icu.13624

---
 source/i18n/precision.cpp |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Index: icu/source/i18n/precision.cpp
===================================================================
--- icu.orig/source/i18n/precision.cpp
+++ icu/source/i18n/precision.cpp
@@ -227,7 +227,7 @@ FixedPrecision::initVisibleDigits(
     }
     // Try to find n such that value * 10^n is an integer
     int32_t n = -1;
-    double scaled;
+    volatile double scaled; // make sure scaled is in memory to avoid excess precision with x87 math
     for (int32_t i = 0; i < UPRV_LENGTHOF(gPower10); ++i) {
         scaled = value * gPower10[i];
         if (scaled > MAX_INT64_IN_DOUBLE || scaled < -MAX_INT64_IN_DOUBLE) {