about summary refs log tree commit diff
path: root/math
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2016-08-03 17:30:41 +0000
committerJoseph Myers <joseph@codesourcery.com>2016-08-03 17:30:41 +0000
commitbf91be88ea90c1ea888d5646270d66363389ce96 (patch)
tree47698077c37a33c048dd303dfe41366d2f017bca /math
parentf2de695bf6ab3d346bf0ec4e436f124cff8edfd4 (diff)
downloadglibc-bf91be88ea90c1ea888d5646270d66363389ce96.tar.gz
glibc-bf91be88ea90c1ea888d5646270d66363389ce96.tar.xz
glibc-bf91be88ea90c1ea888d5646270d66363389ce96.zip
Support __STDC_WANT_IEC_60559_BFP_EXT__ feature test macro.
This patch implements support for the __STDC_WANT_IEC_60559_BFP_EXT__
feature test macro from ISO/IEC 18661-1:2014, following the
__GLIBC_USE approach now used for __STDC_WANT_LIB_EXT2__.  For this
macro, the relevant consideration is whether it is defined or
undefined when an affected header is included (not what its value is
if defined, and not whether it's defined or undefined when any other
unaffected system header is included).

Currently this macro only affects the issignaling macro and the nextup
and nextdown functions (so they can be enabled by defining this macro,
not just by defining _GNU_SOURCE as previously).  Any further features
from this TS added in future would also be conditioned on this macro.

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

	* bits/libc-header-start.h (__GLIBC_USE_IEC_60559_BFP_EXT): New
	macro.
	* include/features.h (__STDC_WANT_IEC_60559_BFP_EXT__): Document.
	* manual/arith.texi (issignaling): Document as ISO from TS
	18661-1:2014.
	(nextup): Likewise.
	(nextupf): Likewise.
	(nextupl): Likewise.
	(nextdown): Likewise.
	(nextdownf): Likewise.
	(nextdownl): Likewise.
	* manual/creature.texi (__STDC_WANT_IEC_60559_BFP_EXT__): Document
	macro.
	* math/math.h: Define
	__GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION and include
	<bits/libc-header-start.h> instead of including <features.h>.
	(issignaling): Define if [__GLIBC_USE (IEC_60559_BFP_EXT)], not
	[__USE_GNU].
	* math/bits/mathcalls.h (nextdown): Declare if
	[__GLIBC_USE (IEC_60559_BFP_EXT)], not [__USE_GNU].
	(nextup): Likewise.
	(__issignaling): Likewise.
Diffstat (limited to 'math')
-rw-r--r--math/bits/mathcalls.h4
-rw-r--r--math/math.h7
2 files changed, 6 insertions, 5 deletions
diff --git a/math/bits/mathcalls.h b/math/bits/mathcalls.h
index e2cf49f627..e1c0521ae8 100644
--- a/math/bits/mathcalls.h
+++ b/math/bits/mathcalls.h
@@ -294,7 +294,7 @@ __MATHCALLX (nextafter,, (_Mdouble_ __x, _Mdouble_ __y), (__const__));
 __MATHCALLX (nexttoward,, (_Mdouble_ __x, long double __y), (__const__));
 # endif
 
-#ifdef __USE_GNU
+#if __GLIBC_USE (IEC_60559_BFP_EXT)
 /* Return X - epsilon.  */
 __MATHCALL (nextdown,, (_Mdouble_ __x));
 /* Return X + epsilon.  */
@@ -377,7 +377,7 @@ __MATHCALL (fma,, (_Mdouble_ __x, _Mdouble_ __y, _Mdouble_ __z));
 __END_NAMESPACE_C99
 #endif
 
-#ifdef __USE_GNU
+#if __GLIBC_USE (IEC_60559_BFP_EXT)
 /* Test for signaling NaN.  */
 __MATHDECL_1 (int, __issignaling,, (_Mdouble_ __value))
      __attribute__ ((__const__));
diff --git a/math/math.h b/math/math.h
index 4724b10b6f..ff9d70adf5 100644
--- a/math/math.h
+++ b/math/math.h
@@ -23,7 +23,8 @@
 #ifndef	_MATH_H
 #define	_MATH_H	1
 
-#include <features.h>
+#define __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
+#include <bits/libc-header-start.h>
 
 __BEGIN_DECLS
 
@@ -328,7 +329,7 @@ enum
 
 #endif /* Use ISO C99.  */
 
-#ifdef __USE_GNU
+#if __GLIBC_USE (IEC_60559_BFP_EXT)
 /* Return nonzero value if X is a signaling NaN.  */
 # ifdef __NO_LONG_DOUBLE_MATH
 #  define issignaling(x) \
@@ -340,7 +341,7 @@ enum
       : sizeof (x) == sizeof (double)					      \
       ? __issignaling (x) : __issignalingl (x))
 # endif
-#endif /* Use GNU.  */
+#endif /* Use IEC_60559_BFP_EXT.  */
 
 #ifdef	__USE_MISC
 /* Support for various different standard error handling behaviors.  */