Define HIGH_ORDER_BIT_IS_SET_FOR_SNAN to 0 or 1.
commit6f322a894704e7959b9cee7c2cc7ec1963a26e73
authorJoseph Myers <joseph@codesourcery.com>
Mon, 17 Oct 2016 22:48:51 +0000 (17 22:48 +0000)
committerJoseph Myers <joseph@codesourcery.com>
Mon, 17 Oct 2016 22:48:51 +0000 (17 22:48 +0000)
tree817009ca0ac99f5c874ae233f8c603d0b646e849
parent8e36adc08eebb526d180b8477f1840c5bd549d83
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.
23 files changed:
ChangeLog
sysdeps/generic/nan-high-order-bit.h [copied from sysdeps/hppa/math_private.h with 63% similarity]
sysdeps/hppa/nan-high-order-bit.h [copied from sysdeps/hppa/math_private.h with 64% similarity]
sysdeps/ieee754/dbl-64/s_issignaling.c
sysdeps/ieee754/dbl-64/s_totalorder.c
sysdeps/ieee754/dbl-64/s_totalordermag.c
sysdeps/ieee754/dbl-64/wordsize-64/s_issignaling.c
sysdeps/ieee754/dbl-64/wordsize-64/s_totalorder.c
sysdeps/ieee754/dbl-64/wordsize-64/s_totalordermag.c
sysdeps/ieee754/flt-32/s_issignalingf.c
sysdeps/ieee754/flt-32/s_totalorderf.c
sysdeps/ieee754/flt-32/s_totalordermagf.c
sysdeps/ieee754/ldbl-128/s_issignalingl.c
sysdeps/ieee754/ldbl-128/s_totalorderl.c
sysdeps/ieee754/ldbl-128/s_totalordermagl.c
sysdeps/ieee754/ldbl-128ibm/s_issignalingl.c
sysdeps/ieee754/ldbl-128ibm/s_totalorderl.c
sysdeps/ieee754/ldbl-128ibm/s_totalordermagl.c
sysdeps/ieee754/ldbl-96/s_issignalingl.c
sysdeps/ieee754/ldbl-96/s_totalorderl.c
sysdeps/ieee754/ldbl-96/s_totalordermagl.c
sysdeps/mips/math_private.h
sysdeps/mips/nan-high-order-bit.h [moved from sysdeps/hppa/math_private.h with 58% similarity]