GNU C Library master sources branch master updated. glibc-2.24-276-g6f322a8

jsm28@sourceware.org jsm28@sourceware.org
Mon Oct 17 22:49:00 GMT 2016


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  6f322a894704e7959b9cee7c2cc7ec1963a26e73 (commit)
      from  8e36adc08eebb526d180b8477f1840c5bd549d83 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=6f322a894704e7959b9cee7c2cc7ec1963a26e73

commit 6f322a894704e7959b9cee7c2cc7ec1963a26e73
Author: Joseph Myers <joseph@codesourcery.com>
Date:   Mon Oct 17 22:48:51 2016 +0000

    Define HIGH_ORDER_BIT_IS_SET_FOR_SNAN to 0 or 1.
    
    This patch moves the HIGH_ORDER_BIT_IS_SET_FOR_SNAN macro from being
    defined or undefined to the preferred convention of always being
    defined, to either 0 or 1, so allowing typo-proof tests with #if.
    
    The macro is moved from math_private.h to a new header
    nan-high-order-bit.h to make it easy for all architectures to define,
    either through the sysdeps/generic version of the header or through
    providing their own version of the header, without needing #ifndef in
    the generic math_private.h to give a default definition.  The move
    also allows the macro to be used without needing math_private.h to be
    included; the immediate motivation of this patch is to allow tests to
    access this information (to know what kinds of NaNs 0 is a valid
    payload for) without needing to include math_private.h.  Existing
    C level rather than preprocessor conditionals at all, but this patch
    does not make such a change).
    
    Tested for x86_64 and x86 (testsuite); also verified for x86_64, x86,
    mips64 and powerpc that installed stripped shared libraries are
    unchanged by the patch.
    
    	* sysdeps/generic/nan-high-order-bit.h: New file.
    	* sysdeps/hppa/nan-high-order-bit.h: Likewise.
    	* sysdeps/mips/nan-high-order-bit.h: Likewise.
    	* sysdeps/hppa/math_private.h: Remove file.
    	* sysdeps/mips/math_private.h (HIGH_ORDER_BIT_IS_SET_FOR_SNAN): Do
    	not define here.
    	* sysdeps/ieee754/dbl-64/s_issignaling.c: Include
    	<nan-high-order-bit.h>.
    	[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
    	* sysdeps/ieee754/dbl-64/s_totalorder.c: Include
    	<nan-high-order-bit.h>.
    	[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
    	* sysdeps/ieee754/dbl-64/s_totalordermag.c: Include
    	<nan-high-order-bit.h>.
    	[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
    	* sysdeps/ieee754/dbl-64/wordsize-64/s_issignaling.c: Include
    	<nan-high-order-bit.h>.
    	[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
    	* sysdeps/ieee754/dbl-64/wordsize-64/s_totalorder.c: Include
    	<nan-high-order-bit.h>.
    	[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
    	* sysdeps/ieee754/dbl-64/wordsize-64/s_totalordermag.c: Include
    	<nan-high-order-bit.h>.
    	[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
    	* sysdeps/ieee754/flt-32/s_issignalingf.c: Include
    	<nan-high-order-bit.h>.
    	[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
    	* sysdeps/ieee754/flt-32/s_totalorderf.c: Include
    	<nan-high-order-bit.h>.
    	[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
    	* sysdeps/ieee754/flt-32/s_totalordermagf.c: Include
    	<nan-high-order-bit.h>.
    	[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
    	* sysdeps/ieee754/ldbl-128/s_issignalingl.c: Include
    	<nan-high-order-bit.h>.
    	[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
    	* sysdeps/ieee754/ldbl-128/s_totalorderl.c: Include
    	<nan-high-order-bit.h>.
    	[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
    	* sysdeps/ieee754/ldbl-128/s_totalordermagl.c: Include
    	<nan-high-order-bit.h>.
    	[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
    	* sysdeps/ieee754/ldbl-128ibm/s_issignalingl.c: Include
    	<nan-high-order-bit.h>.
    	[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
    	* sysdeps/ieee754/ldbl-128ibm/s_totalorderl.c: Include
    	<nan-high-order-bit.h>.
    	[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
    	* sysdeps/ieee754/ldbl-128ibm/s_totalordermagl.c: Include
    	<nan-high-order-bit.h>.
    	[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
    	* sysdeps/ieee754/ldbl-96/s_issignalingl.c: Include
    	<nan-high-order-bit.h>.
    	[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
    	* sysdeps/ieee754/ldbl-96/s_totalorderl.c: Include
    	<nan-high-order-bit.h>.
    	[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
    	* sysdeps/ieee754/ldbl-96/s_totalordermagl.c: Include
    	<nan-high-order-bit.h>.
    	[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.

diff --git a/ChangeLog b/ChangeLog
index 3c328b2..5448fad 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,66 @@
+2016-10-17  Joseph Myers  <joseph@codesourcery.com>
+
+	* sysdeps/generic/nan-high-order-bit.h: New file.
+	* sysdeps/hppa/nan-high-order-bit.h: Likewise.
+	* sysdeps/mips/nan-high-order-bit.h: Likewise.
+	* sysdeps/hppa/math_private.h: Remove file.
+	* sysdeps/mips/math_private.h (HIGH_ORDER_BIT_IS_SET_FOR_SNAN): Do
+	not define here.
+	* sysdeps/ieee754/dbl-64/s_issignaling.c: Include
+	<nan-high-order-bit.h>.
+	[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
+	* sysdeps/ieee754/dbl-64/s_totalorder.c: Include
+	<nan-high-order-bit.h>.
+	[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
+	* sysdeps/ieee754/dbl-64/s_totalordermag.c: Include
+	<nan-high-order-bit.h>.
+	[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
+	* sysdeps/ieee754/dbl-64/wordsize-64/s_issignaling.c: Include
+	<nan-high-order-bit.h>.
+	[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
+	* sysdeps/ieee754/dbl-64/wordsize-64/s_totalorder.c: Include
+	<nan-high-order-bit.h>.
+	[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
+	* sysdeps/ieee754/dbl-64/wordsize-64/s_totalordermag.c: Include
+	<nan-high-order-bit.h>.
+	[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
+	* sysdeps/ieee754/flt-32/s_issignalingf.c: Include
+	<nan-high-order-bit.h>.
+	[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
+	* sysdeps/ieee754/flt-32/s_totalorderf.c: Include
+	<nan-high-order-bit.h>.
+	[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
+	* sysdeps/ieee754/flt-32/s_totalordermagf.c: Include
+	<nan-high-order-bit.h>.
+	[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
+	* sysdeps/ieee754/ldbl-128/s_issignalingl.c: Include
+	<nan-high-order-bit.h>.
+	[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
+	* sysdeps/ieee754/ldbl-128/s_totalorderl.c: Include
+	<nan-high-order-bit.h>.
+	[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
+	* sysdeps/ieee754/ldbl-128/s_totalordermagl.c: Include
+	<nan-high-order-bit.h>.
+	[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
+	* sysdeps/ieee754/ldbl-128ibm/s_issignalingl.c: Include
+	<nan-high-order-bit.h>.
+	[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
+	* sysdeps/ieee754/ldbl-128ibm/s_totalorderl.c: Include
+	<nan-high-order-bit.h>.
+	[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
+	* sysdeps/ieee754/ldbl-128ibm/s_totalordermagl.c: Include
+	<nan-high-order-bit.h>.
+	[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
+	* sysdeps/ieee754/ldbl-96/s_issignalingl.c: Include
+	<nan-high-order-bit.h>.
+	[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
+	* sysdeps/ieee754/ldbl-96/s_totalorderl.c: Include
+	<nan-high-order-bit.h>.
+	[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
+	* sysdeps/ieee754/ldbl-96/s_totalordermagl.c: Include
+	<nan-high-order-bit.h>.
+	[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
+
 2016-10-17  Stefan Liebler  <stli@linux.vnet.ibm.com>
 
 	* sysdeps/s390/fpu/fix-fp-int-compare-invalid.h: New file.
diff --git a/sysdeps/hppa/math_private.h b/sysdeps/generic/nan-high-order-bit.h
similarity index 63%
copy from sysdeps/hppa/math_private.h
copy to sysdeps/generic/nan-high-order-bit.h
index 1acfb9a..1561915 100644
--- a/sysdeps/hppa/math_private.h
+++ b/sysdeps/generic/nan-high-order-bit.h
@@ -1,5 +1,5 @@
-/* Internal math stuff.  HPPA version.
-   Copyright (C) 2013-2016 Free Software Foundation, Inc.
+/* Specify NaN high-order bit conventions.  Generic version.
+   Copyright (C) 2016 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -16,13 +16,12 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#ifndef HPPA_MATH_PRIVATE_H
-#define HPPA_MATH_PRIVATE_H 1
+#ifndef NAN_HIGH_ORDER_BIT_H
+#define NAN_HIGH_ORDER_BIT_H	1
 
-/* One of the few architectures where the meaning of the quiet/signaling bit is
-   inverse to IEEE 754-2008 (as well as common practice for IEEE 754-1985).  */
-#define HIGH_ORDER_BIT_IS_SET_FOR_SNAN
+/* Define this macro to 1 if the high-order bit of a NaN's mantissa is
+   set for signaling NaNs and clear for quiet NaNs, 0 otherwise (the
+   preferred IEEE convention).  */
+#define HIGH_ORDER_BIT_IS_SET_FOR_SNAN 0
 
-#include_next <math_private.h>
-
-#endif
+#endif /* nan-high-order-bit.h */
diff --git a/sysdeps/hppa/math_private.h b/sysdeps/hppa/nan-high-order-bit.h
similarity index 64%
copy from sysdeps/hppa/math_private.h
copy to sysdeps/hppa/nan-high-order-bit.h
index 1acfb9a..a63d6a7 100644
--- a/sysdeps/hppa/math_private.h
+++ b/sysdeps/hppa/nan-high-order-bit.h
@@ -1,5 +1,5 @@
-/* Internal math stuff.  HPPA version.
-   Copyright (C) 2013-2016 Free Software Foundation, Inc.
+/* Specify NaN high-order bit conventions.  HPPA version.
+   Copyright (C) 2016 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -16,13 +16,12 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#ifndef HPPA_MATH_PRIVATE_H
-#define HPPA_MATH_PRIVATE_H 1
+#ifndef NAN_HIGH_ORDER_BIT_H
+#define NAN_HIGH_ORDER_BIT_H	1
 
-/* One of the few architectures where the meaning of the quiet/signaling bit is
-   inverse to IEEE 754-2008 (as well as common practice for IEEE 754-1985).  */
-#define HIGH_ORDER_BIT_IS_SET_FOR_SNAN
+/* One of the few architectures where the meaning of the
+   quiet/signaling bit is inverse to IEEE 754-2008 (as well as common
+   practice for IEEE 754-1985).  */
+#define HIGH_ORDER_BIT_IS_SET_FOR_SNAN 1
 
-#include_next <math_private.h>
-
-#endif
+#endif /* nan-high-order-bit.h */
diff --git a/sysdeps/ieee754/dbl-64/s_issignaling.c b/sysdeps/ieee754/dbl-64/s_issignaling.c
index 4b93d6a..0b845e2 100644
--- a/sysdeps/ieee754/dbl-64/s_issignaling.c
+++ b/sysdeps/ieee754/dbl-64/s_issignaling.c
@@ -18,11 +18,12 @@
 
 #include <math.h>
 #include <math_private.h>
+#include <nan-high-order-bit.h>
 
 int
 __issignaling (double x)
 {
-#ifdef HIGH_ORDER_BIT_IS_SET_FOR_SNAN
+#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
   u_int32_t hxi;
   GET_HIGH_WORD (hxi, x);
   /* We only have to care about the high-order bit of x's significand, because
diff --git a/sysdeps/ieee754/dbl-64/s_totalorder.c b/sysdeps/ieee754/dbl-64/s_totalorder.c
index 73ac32f..c4ec917 100644
--- a/sysdeps/ieee754/dbl-64/s_totalorder.c
+++ b/sysdeps/ieee754/dbl-64/s_totalorder.c
@@ -18,6 +18,7 @@
 
 #include <math.h>
 #include <math_private.h>
+#include <nan-high-order-bit.h>
 #include <stdint.h>
 
 int
@@ -27,7 +28,7 @@ totalorder (double x, double y)
   uint32_t lx, ly;
   EXTRACT_WORDS (hx, lx, x);
   EXTRACT_WORDS (hy, ly, y);
-#ifdef HIGH_ORDER_BIT_IS_SET_FOR_SNAN
+#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
   uint32_t uhx = hx & 0x7fffffff, uhy = hy & 0x7fffffff;
   /* For the preferred quiet NaN convention, this operation is a
      comparison of the representations of the arguments interpreted as
diff --git a/sysdeps/ieee754/dbl-64/s_totalordermag.c b/sysdeps/ieee754/dbl-64/s_totalordermag.c
index e41dade..3850c33 100644
--- a/sysdeps/ieee754/dbl-64/s_totalordermag.c
+++ b/sysdeps/ieee754/dbl-64/s_totalordermag.c
@@ -18,6 +18,7 @@
 
 #include <math.h>
 #include <math_private.h>
+#include <nan-high-order-bit.h>
 #include <stdint.h>
 
 int
@@ -29,7 +30,7 @@ totalordermag (double x, double y)
   EXTRACT_WORDS (hy, ly, y);
   hx &= 0x7fffffff;
   hy &= 0x7fffffff;
-#ifdef HIGH_ORDER_BIT_IS_SET_FOR_SNAN
+#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
   /* For the preferred quiet NaN convention, this operation is a
      comparison of the representations of the absolute values of the
      arguments.  If both arguments are NaNs, invert the
diff --git a/sysdeps/ieee754/dbl-64/wordsize-64/s_issignaling.c b/sysdeps/ieee754/dbl-64/wordsize-64/s_issignaling.c
index c22e608..18d1acd 100644
--- a/sysdeps/ieee754/dbl-64/wordsize-64/s_issignaling.c
+++ b/sysdeps/ieee754/dbl-64/wordsize-64/s_issignaling.c
@@ -18,13 +18,14 @@
 
 #include <math.h>
 #include <math_private.h>
+#include <nan-high-order-bit.h>
 
 int
 __issignaling (double x)
 {
   u_int64_t xi;
   EXTRACT_WORDS64 (xi, x);
-#ifdef HIGH_ORDER_BIT_IS_SET_FOR_SNAN
+#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
   /* We only have to care about the high-order bit of x's significand, because
      having it set (sNaN) already makes the significand different from that
      used to designate infinity.  */
diff --git a/sysdeps/ieee754/dbl-64/wordsize-64/s_totalorder.c b/sysdeps/ieee754/dbl-64/wordsize-64/s_totalorder.c
index 02cd799..dd5587b 100644
--- a/sysdeps/ieee754/dbl-64/wordsize-64/s_totalorder.c
+++ b/sysdeps/ieee754/dbl-64/wordsize-64/s_totalorder.c
@@ -18,6 +18,7 @@
 
 #include <math.h>
 #include <math_private.h>
+#include <nan-high-order-bit.h>
 #include <stdint.h>
 
 int
@@ -26,7 +27,7 @@ totalorder (double x, double y)
   int64_t ix, iy;
   EXTRACT_WORDS64 (ix, x);
   EXTRACT_WORDS64 (iy, y);
-#ifdef HIGH_ORDER_BIT_IS_SET_FOR_SNAN
+#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
   /* For the preferred quiet NaN convention, this operation is a
      comparison of the representations of the arguments interpreted as
      sign-magnitude integers.  If both arguments are NaNs, invert the
diff --git a/sysdeps/ieee754/dbl-64/wordsize-64/s_totalordermag.c b/sysdeps/ieee754/dbl-64/wordsize-64/s_totalordermag.c
index 38f2e1b..999a919 100644
--- a/sysdeps/ieee754/dbl-64/wordsize-64/s_totalordermag.c
+++ b/sysdeps/ieee754/dbl-64/wordsize-64/s_totalordermag.c
@@ -18,6 +18,7 @@
 
 #include <math.h>
 #include <math_private.h>
+#include <nan-high-order-bit.h>
 #include <stdint.h>
 
 int
@@ -28,7 +29,7 @@ totalordermag (double x, double y)
   EXTRACT_WORDS64 (iy, y);
   ix &= 0x7fffffffffffffffULL;
   iy &= 0x7fffffffffffffffULL;
-#ifdef HIGH_ORDER_BIT_IS_SET_FOR_SNAN
+#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
   /* For the preferred quiet NaN convention, this operation is a
      comparison of the representations of the absolute values of the
      arguments.  If both arguments are NaNs, invert the
diff --git a/sysdeps/ieee754/flt-32/s_issignalingf.c b/sysdeps/ieee754/flt-32/s_issignalingf.c
index 2409ff4..965ba92 100644
--- a/sysdeps/ieee754/flt-32/s_issignalingf.c
+++ b/sysdeps/ieee754/flt-32/s_issignalingf.c
@@ -18,13 +18,14 @@
 
 #include <math.h>
 #include <math_private.h>
+#include <nan-high-order-bit.h>
 
 int
 __issignalingf (float x)
 {
   u_int32_t xi;
   GET_FLOAT_WORD (xi, x);
-#ifdef HIGH_ORDER_BIT_IS_SET_FOR_SNAN
+#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
   /* We only have to care about the high-order bit of x's significand, because
      having it set (sNaN) already makes the significand different from that
      used to designate infinity.  */
diff --git a/sysdeps/ieee754/flt-32/s_totalorderf.c b/sysdeps/ieee754/flt-32/s_totalorderf.c
index 1ed30d8..243387b 100644
--- a/sysdeps/ieee754/flt-32/s_totalorderf.c
+++ b/sysdeps/ieee754/flt-32/s_totalorderf.c
@@ -18,6 +18,7 @@
 
 #include <math.h>
 #include <math_private.h>
+#include <nan-high-order-bit.h>
 #include <stdint.h>
 
 int
@@ -26,7 +27,7 @@ totalorderf (float x, float y)
   int32_t ix, iy;
   GET_FLOAT_WORD (ix, x);
   GET_FLOAT_WORD (iy, y);
-#ifdef HIGH_ORDER_BIT_IS_SET_FOR_SNAN
+#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
   /* For the preferred quiet NaN convention, this operation is a
      comparison of the representations of the arguments interpreted as
      sign-magnitude integers.  If both arguments are NaNs, invert the
diff --git a/sysdeps/ieee754/flt-32/s_totalordermagf.c b/sysdeps/ieee754/flt-32/s_totalordermagf.c
index 7c01edc..be78eae 100644
--- a/sysdeps/ieee754/flt-32/s_totalordermagf.c
+++ b/sysdeps/ieee754/flt-32/s_totalordermagf.c
@@ -18,6 +18,7 @@
 
 #include <math.h>
 #include <math_private.h>
+#include <nan-high-order-bit.h>
 #include <stdint.h>
 
 int
@@ -28,7 +29,7 @@ totalordermagf (float x, float y)
   GET_FLOAT_WORD (iy, y);
   ix &= 0x7fffffff;
   iy &= 0x7fffffff;
-#ifdef HIGH_ORDER_BIT_IS_SET_FOR_SNAN
+#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
   /* For the preferred quiet NaN convention, this operation is a
      comparison of the representations of the absolute values of the
      arguments.  If both arguments are NaNs, invert the
diff --git a/sysdeps/ieee754/ldbl-128/s_issignalingl.c b/sysdeps/ieee754/ldbl-128/s_issignalingl.c
index 6af1db4..cb0f2a5 100644
--- a/sysdeps/ieee754/ldbl-128/s_issignalingl.c
+++ b/sysdeps/ieee754/ldbl-128/s_issignalingl.c
@@ -18,13 +18,14 @@
 
 #include <math.h>
 #include <math_private.h>
+#include <nan-high-order-bit.h>
 
 int
 __issignalingl (_Float128 x)
 {
   u_int64_t hxi, lxi __attribute__ ((unused));
   GET_LDOUBLE_WORDS64 (hxi, lxi, x);
-#ifdef HIGH_ORDER_BIT_IS_SET_FOR_SNAN
+#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
   /* We only have to care about the high-order bit of x's significand, because
      having it set (sNaN) already makes the significand different from that
      used to designate infinity.  */
diff --git a/sysdeps/ieee754/ldbl-128/s_totalorderl.c b/sysdeps/ieee754/ldbl-128/s_totalorderl.c
index dc76ccf..32ede1f 100644
--- a/sysdeps/ieee754/ldbl-128/s_totalorderl.c
+++ b/sysdeps/ieee754/ldbl-128/s_totalorderl.c
@@ -18,6 +18,7 @@
 
 #include <math.h>
 #include <math_private.h>
+#include <nan-high-order-bit.h>
 #include <stdint.h>
 
 int
@@ -27,7 +28,7 @@ totalorderl (_Float128 x, _Float128 y)
   uint64_t lx, ly;
   GET_LDOUBLE_WORDS64 (hx, lx, x);
   GET_LDOUBLE_WORDS64 (hy, ly, y);
-#ifdef HIGH_ORDER_BIT_IS_SET_FOR_SNAN
+#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
   uint64_t uhx = hx & 0x7fffffffffffffffULL;
   uint64_t uhy = hy & 0x7fffffffffffffffULL;
   /* For the preferred quiet NaN convention, this operation is a
diff --git a/sysdeps/ieee754/ldbl-128/s_totalordermagl.c b/sysdeps/ieee754/ldbl-128/s_totalordermagl.c
index bcfeecd..5446809 100644
--- a/sysdeps/ieee754/ldbl-128/s_totalordermagl.c
+++ b/sysdeps/ieee754/ldbl-128/s_totalordermagl.c
@@ -18,6 +18,7 @@
 
 #include <math.h>
 #include <math_private.h>
+#include <nan-high-order-bit.h>
 #include <stdint.h>
 
 int
@@ -29,7 +30,7 @@ totalordermagl (_Float128 x, _Float128 y)
   GET_LDOUBLE_WORDS64 (hy, ly, y);
   hx &= 0x7fffffffffffffffULL;
   hy &= 0x7fffffffffffffffULL;
-#ifdef HIGH_ORDER_BIT_IS_SET_FOR_SNAN
+#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
   /* For the preferred quiet NaN convention, this operation is a
      comparison of the representations of the absolute values of the
      arguments.  If both arguments are NaNs, invert the
diff --git a/sysdeps/ieee754/ldbl-128ibm/s_issignalingl.c b/sysdeps/ieee754/ldbl-128ibm/s_issignalingl.c
index 0915139..94cfffc 100644
--- a/sysdeps/ieee754/ldbl-128ibm/s_issignalingl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/s_issignalingl.c
@@ -18,6 +18,7 @@
 
 #include <math.h>
 #include <math_private.h>
+#include <nan-high-order-bit.h>
 
 int
 __issignalingl (long double x)
@@ -29,7 +30,7 @@ __issignalingl (long double x)
 
   xhi = ldbl_high (x);
   EXTRACT_WORDS64 (xi, xhi);
-#ifdef HIGH_ORDER_BIT_IS_SET_FOR_SNAN
+#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
 # error untested
   /* We only have to care about the high-order bit of x's significand, because
      having it set (sNaN) already makes the significand different from that
diff --git a/sysdeps/ieee754/ldbl-128ibm/s_totalorderl.c b/sysdeps/ieee754/ldbl-128ibm/s_totalorderl.c
index 1535b2f..ff55779 100644
--- a/sysdeps/ieee754/ldbl-128ibm/s_totalorderl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/s_totalorderl.c
@@ -18,6 +18,7 @@
 
 #include <math.h>
 #include <math_private.h>
+#include <nan-high-order-bit.h>
 #include <stdint.h>
 
 int
@@ -30,7 +31,7 @@ totalorderl (long double x, long double y)
   EXTRACT_WORDS64 (hx, xhi);
   ldbl_unpack (y, &yhi, &ylo);
   EXTRACT_WORDS64 (hy, yhi);
-#ifdef HIGH_ORDER_BIT_IS_SET_FOR_SNAN
+#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
 # error not implemented
 #endif
   uint64_t hx_sign = hx >> 63;
diff --git a/sysdeps/ieee754/ldbl-128ibm/s_totalordermagl.c b/sysdeps/ieee754/ldbl-128ibm/s_totalordermagl.c
index 509a23a..739e231 100644
--- a/sysdeps/ieee754/ldbl-128ibm/s_totalordermagl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/s_totalordermagl.c
@@ -18,6 +18,7 @@
 
 #include <math.h>
 #include <math_private.h>
+#include <nan-high-order-bit.h>
 #include <stdint.h>
 
 int
@@ -30,7 +31,7 @@ totalordermagl (long double x, long double y)
   EXTRACT_WORDS64 (hx, xhi);
   ldbl_unpack (y, &yhi, &ylo);
   EXTRACT_WORDS64 (hy, yhi);
-#ifdef HIGH_ORDER_BIT_IS_SET_FOR_SNAN
+#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
 # error not implemented
 #endif
   uint64_t x_sign = hx & 0x8000000000000000ULL;
diff --git a/sysdeps/ieee754/ldbl-96/s_issignalingl.c b/sysdeps/ieee754/ldbl-96/s_issignalingl.c
index 73646ca..364e5db 100644
--- a/sysdeps/ieee754/ldbl-96/s_issignalingl.c
+++ b/sysdeps/ieee754/ldbl-96/s_issignalingl.c
@@ -18,13 +18,14 @@
 
 #include <math.h>
 #include <math_private.h>
+#include <nan-high-order-bit.h>
 
 int
 __issignalingl (long double x)
 {
   u_int32_t exi, hxi, lxi;
   GET_LDOUBLE_WORDS (exi, hxi, lxi, x);
-#ifdef HIGH_ORDER_BIT_IS_SET_FOR_SNAN
+#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
 # error not implemented
 #else
   /* To keep the following comparison simple, toggle the quiet/signaling bit,
diff --git a/sysdeps/ieee754/ldbl-96/s_totalorderl.c b/sysdeps/ieee754/ldbl-96/s_totalorderl.c
index 4f14baf..ddc28b8 100644
--- a/sysdeps/ieee754/ldbl-96/s_totalorderl.c
+++ b/sysdeps/ieee754/ldbl-96/s_totalorderl.c
@@ -19,6 +19,7 @@
 #include <float.h>
 #include <math.h>
 #include <math_private.h>
+#include <nan-high-order-bit.h>
 #include <stdint.h>
 
 int
@@ -41,7 +42,7 @@ totalorderl (long double x, long double y)
       if ((expy & 0x7fff) == 0x7fff)
 	hy |= 0x80000000;
     }
-#ifdef HIGH_ORDER_BIT_IS_SET_FOR_SNAN
+#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
 # error not implemented
 #endif
   uint32_t x_sign = expx >> 15;
diff --git a/sysdeps/ieee754/ldbl-96/s_totalordermagl.c b/sysdeps/ieee754/ldbl-96/s_totalordermagl.c
index 0167f0f..4ca28e7 100644
--- a/sysdeps/ieee754/ldbl-96/s_totalordermagl.c
+++ b/sysdeps/ieee754/ldbl-96/s_totalordermagl.c
@@ -19,6 +19,7 @@
 #include <float.h>
 #include <math.h>
 #include <math_private.h>
+#include <nan-high-order-bit.h>
 #include <stdint.h>
 
 int
@@ -43,7 +44,7 @@ totalordermagl (long double x, long double y)
       if (expy == 0x7fff)
 	hy |= 0x80000000;
     }
-#ifdef HIGH_ORDER_BIT_IS_SET_FOR_SNAN
+#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
 # error not implemented
 #endif
   return expx < expy || (expx == expy && (hx < hy || (hx == hy && lx <= ly)));
diff --git a/sysdeps/mips/math_private.h b/sysdeps/mips/math_private.h
index 2ea3c57..4587d01 100644
--- a/sysdeps/mips/math_private.h
+++ b/sysdeps/mips/math_private.h
@@ -19,14 +19,6 @@
 #ifndef MIPS_MATH_PRIVATE_H
 #define MIPS_MATH_PRIVATE_H 1
 
-#ifdef __mips_nan2008
-/* MIPS aligned to IEEE 754-2008.  */
-#else
-/* One of the few architectures where the meaning of the quiet/signaling bit is
-   inverse to IEEE 754-2008 (as well as common practice for IEEE 754-1985).  */
-# define HIGH_ORDER_BIT_IS_SET_FOR_SNAN
-#endif
-
 /* Inline functions to speed up the math library implementation.  The
    default versions of these routines are in generic/math_private.h
    and call fesetround, feholdexcept, etc.  These routines use inlined
diff --git a/sysdeps/hppa/math_private.h b/sysdeps/mips/nan-high-order-bit.h
similarity index 58%
rename from sysdeps/hppa/math_private.h
rename to sysdeps/mips/nan-high-order-bit.h
index 1acfb9a..0aaef0f 100644
--- a/sysdeps/hppa/math_private.h
+++ b/sysdeps/mips/nan-high-order-bit.h
@@ -1,5 +1,5 @@
-/* Internal math stuff.  HPPA version.
-   Copyright (C) 2013-2016 Free Software Foundation, Inc.
+/* Specify NaN high-order bit conventions.  MIPS version.
+   Copyright (C) 2016 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -16,13 +16,17 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#ifndef HPPA_MATH_PRIVATE_H
-#define HPPA_MATH_PRIVATE_H 1
-
-/* One of the few architectures where the meaning of the quiet/signaling bit is
-   inverse to IEEE 754-2008 (as well as common practice for IEEE 754-1985).  */
-#define HIGH_ORDER_BIT_IS_SET_FOR_SNAN
-
-#include_next <math_private.h>
+#ifndef NAN_HIGH_ORDER_BIT_H
+#define NAN_HIGH_ORDER_BIT_H	1
 
+#ifdef __mips_nan2008
+/* MIPS aligned to IEEE 754-2008.  */
+# define HIGH_ORDER_BIT_IS_SET_FOR_SNAN 0
+#else
+/* One of the few architectures where the meaning of the
+   quiet/signaling bit is inverse to IEEE 754-2008 (as well as common
+   practice for IEEE 754-1985).  */
+# define HIGH_ORDER_BIT_IS_SET_FOR_SNAN 1
 #endif
+
+#endif /* nan-high-order-bit.h */

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                                          |   63 ++++++++++++++++++++
 sysdeps/generic/nan-high-order-bit.h               |   27 ++++++++
 sysdeps/hppa/math_private.h                        |   28 ---------
 sysdeps/hppa/nan-high-order-bit.h                  |   27 ++++++++
 sysdeps/ieee754/dbl-64/s_issignaling.c             |    3 +-
 sysdeps/ieee754/dbl-64/s_totalorder.c              |    3 +-
 sysdeps/ieee754/dbl-64/s_totalordermag.c           |    3 +-
 sysdeps/ieee754/dbl-64/wordsize-64/s_issignaling.c |    3 +-
 sysdeps/ieee754/dbl-64/wordsize-64/s_totalorder.c  |    3 +-
 .../ieee754/dbl-64/wordsize-64/s_totalordermag.c   |    3 +-
 sysdeps/ieee754/flt-32/s_issignalingf.c            |    3 +-
 sysdeps/ieee754/flt-32/s_totalorderf.c             |    3 +-
 sysdeps/ieee754/flt-32/s_totalordermagf.c          |    3 +-
 sysdeps/ieee754/ldbl-128/s_issignalingl.c          |    3 +-
 sysdeps/ieee754/ldbl-128/s_totalorderl.c           |    3 +-
 sysdeps/ieee754/ldbl-128/s_totalordermagl.c        |    3 +-
 sysdeps/ieee754/ldbl-128ibm/s_issignalingl.c       |    3 +-
 sysdeps/ieee754/ldbl-128ibm/s_totalorderl.c        |    3 +-
 sysdeps/ieee754/ldbl-128ibm/s_totalordermagl.c     |    3 +-
 sysdeps/ieee754/ldbl-96/s_issignalingl.c           |    3 +-
 sysdeps/ieee754/ldbl-96/s_totalorderl.c            |    3 +-
 sysdeps/ieee754/ldbl-96/s_totalordermagl.c         |    3 +-
 sysdeps/mips/math_private.h                        |    8 ---
 sysdeps/mips/nan-high-order-bit.h                  |   32 ++++++++++
 24 files changed, 185 insertions(+), 54 deletions(-)
 create mode 100644 sysdeps/generic/nan-high-order-bit.h
 delete mode 100644 sysdeps/hppa/math_private.h
 create mode 100644 sysdeps/hppa/nan-high-order-bit.h
 create mode 100644 sysdeps/mips/nan-high-order-bit.h


hooks/post-receive
-- 
GNU C Library master sources



More information about the Glibc-cvs mailing list