This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Use C11 *_TRUE_MIN macros where applicable [committed]


C11 defines standard <float.h> macros *_TRUE_MIN for the least
positive subnormal value of a type.  Now that we build with
-std=gnu11, we can use these macros in glibc.  This patch replaces
previous uses of the GCC predefines __*_DENORM_MIN__ (used in
<float.h> to define *_TRUE_MIN), as well as *_DENORM_MIN references in
comments.

Tested for x86_64 and x86 (testsuite, and that installed shared
libraries are unchanged by the patch).  Also tested for powerpc that
installed stripped shared libraries are unchanged by the patch.  
Committed.

2015-10-28  Joseph Myers  <joseph@codesourcery.com>

	* math/libm-test.inc (min_subnorm_value): Use LDBL_TRUE_MIN,
	DBL_TRUE_MIN and FLT_TRUE_MIN instead of __LDBL_DENORM_MIN__,
	__DBL_DENORM_MIN__ and __FLT_DENORM_MIN__.
	* sysdeps/ieee754/dbl-64/s_fma.c (__fma): Refer to DBL_TRUE_MIN
	instead of DBL_DENORM_MIN in comment.
	* sysdeps/ieee754/ldbl-128/s_fmal.c (__fmal): Refer to
	LDBL_TRUE_MIN instead of LDBL_DENORM_MIN in comment.
	* sysdeps/ieee754/ldbl-128ibm/s_nextafterl.c: Include <float.h>.
	(__nextafterl): Use LDBL_TRUE_MIN instead of __LDBL_DENORM_MIN__.
	* sysdeps/ieee754/ldbl-96/s_fmal.c (__fmal): Refer to
	LDBL_TRUE_MIN instead of LDBL_DENORM_MIN in comment.

diff --git a/math/libm-test.inc b/math/libm-test.inc
index 6cce5fc..631b205 100644
--- a/math/libm-test.inc
+++ b/math/libm-test.inc
@@ -315,12 +315,12 @@ static int ignore_max_ulp;	/* Should we ignore max_ulp?  */
 				LDBL_MAX, DBL_MAX, FLT_MAX)
 #define min_value	CHOOSE (LDBL_MIN, DBL_MIN, FLT_MIN,	\
 				LDBL_MIN, DBL_MIN, FLT_MIN)
-#define min_subnorm_value	CHOOSE (__LDBL_DENORM_MIN__,	\
-					__DBL_DENORM_MIN__,	\
-					__FLT_DENORM_MIN__,	\
-					__LDBL_DENORM_MIN__,	\
-					__DBL_DENORM_MIN__,	\
-					__FLT_DENORM_MIN__)
+#define min_subnorm_value	CHOOSE (LDBL_TRUE_MIN,	\
+					DBL_TRUE_MIN,	\
+					FLT_TRUE_MIN,	\
+					LDBL_TRUE_MIN,	\
+					DBL_TRUE_MIN,	\
+					FLT_TRUE_MIN)
 
 static FLOAT max_error, real_max_error, imag_max_error;
 
diff --git a/sysdeps/ieee754/dbl-64/s_fma.c b/sysdeps/ieee754/dbl-64/s_fma.c
index 8b4e133..4b9ec8b 100644
--- a/sysdeps/ieee754/dbl-64/s_fma.c
+++ b/sysdeps/ieee754/dbl-64/s_fma.c
@@ -66,7 +66,7 @@ __fma (double x, double y, double z)
       /* If fma will certainly overflow, compute as x * y.  */
       if (u.ieee.exponent + v.ieee.exponent > 0x7ff + IEEE754_DOUBLE_BIAS)
 	return x * y;
-      /* If x * y is less than 1/4 of DBL_DENORM_MIN, neither the
+      /* If x * y is less than 1/4 of DBL_TRUE_MIN, neither the
 	 result nor whether there is underflow depends on its exact
 	 value, only on its sign.  */
       if (u.ieee.exponent + v.ieee.exponent
diff --git a/sysdeps/ieee754/ldbl-128/s_fmal.c b/sysdeps/ieee754/ldbl-128/s_fmal.c
index e231ce6..3c87039 100644
--- a/sysdeps/ieee754/ldbl-128/s_fmal.c
+++ b/sysdeps/ieee754/ldbl-128/s_fmal.c
@@ -68,7 +68,7 @@ __fmal (long double x, long double y, long double z)
       if (u.ieee.exponent + v.ieee.exponent
 	  > 0x7fff + IEEE854_LONG_DOUBLE_BIAS)
 	return x * y;
-      /* If x * y is less than 1/4 of LDBL_DENORM_MIN, neither the
+      /* If x * y is less than 1/4 of LDBL_TRUE_MIN, neither the
 	 result nor whether there is underflow depends on its exact
 	 value, only on its sign.  */
       if (u.ieee.exponent + v.ieee.exponent
diff --git a/sysdeps/ieee754/ldbl-128ibm/s_nextafterl.c b/sysdeps/ieee754/ldbl-128ibm/s_nextafterl.c
index bf57cb8..36a5090 100644
--- a/sysdeps/ieee754/ldbl-128ibm/s_nextafterl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/s_nextafterl.c
@@ -24,6 +24,7 @@ static char rcsid[] = "$NetBSD: $";
  *   Special cases:
  */
 
+#include <float.h>
 #include <math.h>
 #include <math_private.h>
 #include <math_ldbl_opt.h>
@@ -76,7 +77,7 @@ long double __nextafterl(long double x, long double y)
 	    }
 	    if(ihx <= 0x0360000000000000LL) {  /* x <= LDBL_MIN */
 	      u = math_opt_barrier (x);
-	      x -= __LDBL_DENORM_MIN__;
+	      x -= LDBL_TRUE_MIN;
 	      if (ihx < 0x0360000000000000LL
 		  || (hx > 0 && lx <= 0)
 		  || (hx < 0 && lx > 1)) {
@@ -115,14 +116,14 @@ long double __nextafterl(long double x, long double y)
 	    }
 	    if(ihx <= 0x0360000000000000LL) {  /* x <= LDBL_MIN */
 	      u = math_opt_barrier (x);
-	      x += __LDBL_DENORM_MIN__;
+	      x += LDBL_TRUE_MIN;
 	      if (ihx < 0x0360000000000000LL
 		  || (hx > 0 && lx < 0 && lx != 0x8000000000000001LL)
 		  || (hx < 0 && lx >= 0)) {
 		u = u * u;
 		math_force_eval (u);		/* raise underflow flag */
 	      }
-	      if (x == 0.0L)	/* handle negative __LDBL_DENORM_MIN__ case */
+	      if (x == 0.0L)	/* handle negative LDBL_TRUE_MIN case */
 		x = -0.0L;
 	      return x;
 	    }
diff --git a/sysdeps/ieee754/ldbl-96/s_fmal.c b/sysdeps/ieee754/ldbl-96/s_fmal.c
index d11885e..1a0d83b 100644
--- a/sysdeps/ieee754/ldbl-96/s_fmal.c
+++ b/sysdeps/ieee754/ldbl-96/s_fmal.c
@@ -68,7 +68,7 @@ __fmal (long double x, long double y, long double z)
       if (u.ieee.exponent + v.ieee.exponent
 	  > 0x7fff + IEEE854_LONG_DOUBLE_BIAS)
 	return x * y;
-      /* If x * y is less than 1/4 of LDBL_DENORM_MIN, neither the
+      /* If x * y is less than 1/4 of LDBL_TRUE_MIN, neither the
 	 result nor whether there is underflow depends on its exact
 	 value, only on its sign.  */
       if (u.ieee.exponent + v.ieee.exponent

-- 
Joseph S. Myers
joseph@codesourcery.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]