aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/ieee754
diff options
context:
space:
mode:
authorStan Shebs <stanshebs@google.com>2018-01-23 08:28:31 -0800
committerStan Shebs <stanshebs@google.com>2018-01-23 08:28:31 -0800
commitfe9f4b71d6f55e3f4a13090749603bf747a45ab7 (patch)
treeccd7ffb90c4b0f0f5dc04d6620e17e5742b65751 /sysdeps/ieee754
parent96d0e6f1e0ee50c51b115342ac085ccc7caa9074 (diff)
downloadglibc-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.c6
-rw-r--r--sysdeps/ieee754/k_standard.c2
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
/*