This is the mail archive of the glibc-cvs@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]

GNU C Library master sources branch master updated. glibc-2.26-243-gc0c49d6


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  c0c49d60cfeff3b2aa801d6598143a073989654a (commit)
      from  5ef1b2138d4236bb3616e612c5bc4dc328a9ffb2 (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=c0c49d60cfeff3b2aa801d6598143a073989654a

commit c0c49d60cfeff3b2aa801d6598143a073989654a
Author: Joseph Myers <joseph@codesourcery.com>
Date:   Thu Aug 31 16:39:25 2017 +0000

    Simplify NAN definitions.
    
    Similar to my patches for HUGE_VAL and INFINITY. this patch eliminates
    the bits/nan.h headers.  __builtin_nanf ("") is used to define NAN for
    GCC 3.3 and later; the fallback is (0.0f / 0.0f), which is a constant
    expression for a quiet NaN of type float, but raises a spurious
    "invalid" exception outside static initializers, which seems the best
    that can be done purely in standard C.  Again, if anyone actually uses
    a compiler with its own incompatible extension for producing a
    constant quiet NaN, we can add compiler conditionals.
    
    Tested for x86_64.
    
    	*  math/math.h [__USE_ISOC99] (NAN): Define directly here.  Do not
    	include <bits/nan.h>.
    	* math/Makefile (headers): Remove bits/nan.h.
    	* bits/nan.h: Remove.
    	* sysdeps/ieee754/bits/nan.h: Likewise.
    	* sysdeps/mips/bits/nan.h: Likewise.

diff --git a/ChangeLog b/ChangeLog
index 904d375..a87a9c4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
 2017-08-31  Joseph Myers  <joseph@codesourcery.com>
 
+	*  math/math.h [__USE_ISOC99] (NAN): Define directly here.  Do not
+	include <bits/nan.h>.
+	* math/Makefile (headers): Remove bits/nan.h.
+	* bits/nan.h: Remove.
+	* sysdeps/ieee754/bits/nan.h: Likewise.
+	* sysdeps/mips/bits/nan.h: Likewise.
+
 	* math/math.h [__USE_ISOC99] (INFINITY): Define directly here.  Do
 	not include <bits/inf.h>.
 	* math/Makefile (headers): Remove bits/inf.h.
diff --git a/bits/nan.h b/bits/nan.h
deleted file mode 100644
index ab38168..0000000
--- a/bits/nan.h
+++ /dev/null
@@ -1,5 +0,0 @@
-#ifndef _MATH_H
-#error "Never use <bits/nan.h> directly; include <math.h> instead."
-#endif
-
-/* This file should define `NAN' on machines that have such things.  */
diff --git a/math/Makefile b/math/Makefile
index b9a06f0..0601f3a 100644
--- a/math/Makefile
+++ b/math/Makefile
@@ -23,7 +23,6 @@ include ../Makeconfig
 
 # Installed header files.
 headers		:= math.h bits/mathcalls.h bits/mathinline.h \
-		   bits/nan.h \
 		   fpu_control.h complex.h bits/cmathcalls.h fenv.h \
 		   bits/fenv.h bits/fenvinline.h bits/mathdef.h tgmath.h \
 		   bits/math-finite.h bits/math-vector.h \
diff --git a/math/math.h b/math/math.h
index 5f5a498..bbc1ab9 100644
--- a/math/math.h
+++ b/math/math.h
@@ -65,8 +65,15 @@ __BEGIN_DECLS
 #  define INFINITY HUGE_VALF
 # endif
 
-/* Get machine-dependent NAN value (returned for some domain errors).  */
-# include <bits/nan.h>
+/* IEEE Not A Number.  */
+# if __GNUC_PREREQ (3, 3)
+#  define NAN (__builtin_nanf (""))
+# else
+/* This will raise an "invalid" exception outside static initializers,
+   but is the best that can be done in ISO C while remaining a
+   constant expression.  */
+#  define NAN (0.0f / 0.0f)
+# endif
 #endif /* __USE_ISOC99 */
 
 #if __GLIBC_USE (IEC_60559_BFP_EXT)
diff --git a/sysdeps/ieee754/bits/nan.h b/sysdeps/ieee754/bits/nan.h
deleted file mode 100644
index b6e14f5..0000000
--- a/sysdeps/ieee754/bits/nan.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/* `NAN' constant for IEEE 754 machines.
-   Copyright (C) 1992-2017 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
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _MATH_H
-# error "Never use <bits/nan.h> directly; include <math.h> instead."
-#endif
-
-
-/* IEEE Not A Number.  */
-
-#if __GNUC_PREREQ(3,3)
-
-# define NAN	(__builtin_nanf (""))
-
-#elif defined __GNUC__
-
-# define NAN \
-  (__extension__							      \
-   ((union { unsigned __l __attribute__ ((__mode__ (__SI__))); float __d; })  \
-    { __l: 0x7fc00000UL }).__d)
-
-#else
-
-# include <endian.h>
-
-# if __BYTE_ORDER == __BIG_ENDIAN
-#  define __qnan_bytes		{ 0x7f, 0xc0, 0, 0 }
-# endif
-# if __BYTE_ORDER == __LITTLE_ENDIAN
-#  define __qnan_bytes		{ 0, 0, 0xc0, 0x7f }
-# endif
-
-static union { unsigned char __c[4]; float __d; } __qnan_union
-  __attribute__ ((__unused__)) = { __qnan_bytes };
-# define NAN	(__qnan_union.__d)
-
-#endif	/* GCC.  */
diff --git a/sysdeps/mips/bits/nan.h b/sysdeps/mips/bits/nan.h
deleted file mode 100644
index a4a1ef9..0000000
--- a/sysdeps/mips/bits/nan.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/* `NAN' constant for IEEE 754 machines.  MIPS version.
-   Copyright (C) 1992-2017 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
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _MATH_H
-# error "Never use <bits/nan.h> directly; include <math.h> instead."
-#endif
-
-
-/* IEEE Not A Number.  */
-/* In legacy-NaN mode MIPS has the qNaN and sNaN patterns reversed
-   compared to most other architectures.  IEEE 754-1985 left the
-   definition of this open to implementations, and for MIPS the top bit
-   of the mantissa must be SET to indicate a sNaN.  In 2008-NaN mode
-   MIPS aligned to IEEE 754-2008.  */
-
-#if __GNUC_PREREQ(3,3)
-
-# define NAN	(__builtin_nanf (""))
-
-#elif defined __GNUC__
-
-/* No 2008-NaN mode support in any GCC version before 4.9.  */
-
-# define NAN \
-  (__extension__							      \
-   ((union { unsigned __l __attribute__ ((__mode__ (__SI__))); float __d; })  \
-    { __l: 0x7fbfffffUL }).__d)
-
-#else
-
-# include <endian.h>
-
-# if __BYTE_ORDER == __BIG_ENDIAN
-#  ifdef __mips_nan2008
-#   define __qnan_bytes		{ 0x7f, 0xc0, 0, 0 }
-#  else
-#   define __qnan_bytes		{ 0x7f, 0xbf, 0xff, 0xff }
-#  endif
-# endif
-# if __BYTE_ORDER == __LITTLE_ENDIAN
-#  ifdef __mips_nan2008
-#   define __qnan_bytes		{ 0, 0, 0xc0, 0x7f }
-#  else
-#   define __qnan_bytes		{ 0xff, 0xff, 0xbf, 0x7f }
-#  endif
-# endif
-
-static union { unsigned char __c[4]; float __d; } __qnan_union
-  __attribute__ ((__unused__)) = { __qnan_bytes };
-# define NAN	(__qnan_union.__d)
-
-#endif	/* GCC.  */

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

Summary of changes:
 ChangeLog                  |    7 ++++
 bits/nan.h                 |    5 ---
 math/Makefile              |    1 -
 math/math.h                |   11 ++++++-
 sysdeps/ieee754/bits/nan.h |   52 ----------------------------------
 sysdeps/mips/bits/nan.h    |   67 --------------------------------------------
 6 files changed, 16 insertions(+), 127 deletions(-)
 delete mode 100644 bits/nan.h
 delete mode 100644 sysdeps/ieee754/bits/nan.h
 delete mode 100644 sysdeps/mips/bits/nan.h


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


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