diff options
author | Stan Shebs <stanshebs@google.com> | 2018-01-23 08:28:31 -0800 |
---|---|---|
committer | Stan Shebs <stanshebs@google.com> | 2018-01-23 08:28:31 -0800 |
commit | fe9f4b71d6f55e3f4a13090749603bf747a45ab7 (patch) | |
tree | ccd7ffb90c4b0f0f5dc04d6620e17e5742b65751 /sysdeps/ieee754 | |
parent | 96d0e6f1e0ee50c51b115342ac085ccc7caa9074 (diff) | |
download | glibc-fe9f4b71d6f55e3f4a13090749603bf747a45ab7.zip glibc-fe9f4b71d6f55e3f4a13090749603bf747a45ab7.tar.gz glibc-fe9f4b71d6f55e3f4a13090749603bf747a45ab7.tar.bz2 |
Make zero volatile to defeat constant-folding of 0.0/0.0
Diffstat (limited to 'sysdeps/ieee754')
-rw-r--r-- | sysdeps/ieee754/dbl-64/e_log.c | 6 | ||||
-rw-r--r-- | sysdeps/ieee754/k_standard.c | 2 |
2 files changed, 5 insertions, 3 deletions
diff --git a/sysdeps/ieee754/dbl-64/e_log.c b/sysdeps/ieee754/dbl-64/e_log.c index 6a18ebb..1558a2e 100644 --- a/sysdeps/ieee754/dbl-64/e_log.c +++ b/sysdeps/ieee754/dbl-64/e_log.c @@ -69,6 +69,8 @@ __ieee754_log (double x) number num; mp_no mpx, mpy, mpy1, mpy2, mperr; + volatile double zero = 0.0; + #include "ulog.tbl" #include "ulog.h" @@ -81,9 +83,9 @@ __ieee754_log (double x) if (__glibc_unlikely (ux < 0x00100000)) { if (__glibc_unlikely (((ux & 0x7fffffff) | dx) == 0)) - return MHALF / 0.0; /* return -INF */ + return MHALF / zero; /* return -INF */ if (__glibc_unlikely (ux < 0)) - return (x - x) / 0.0; /* return NaN */ + return (x - x) / zero; /* return NaN */ n -= 54; x *= two54.d; /* scale x */ num.d = x; diff --git a/sysdeps/ieee754/k_standard.c b/sysdeps/ieee754/k_standard.c index f74f9c7..f0436cc 100644 --- a/sysdeps/ieee754/k_standard.c +++ b/sysdeps/ieee754/k_standard.c @@ -38,7 +38,7 @@ static char rcsid[] = "$NetBSD: k_standard.c,v 1.6 1995/05/10 20:46:35 jtc Exp $ # if 0 static const double zero = 0.0; /* used as const */ # else -static double zero = 0.0; /* used as const */ +volatile static double zero = 0.0; /* used as const */ # endif /* |