Skip to content
Commit 86ec4865 authored by Joseph Myers's avatar Joseph Myers
Browse files

Handle more _FloatN, _FloatNx types in tgmath.h.

Continuing the preparation for additional _FloatN / _FloatNx type
support, this patch improves how <tgmath.h> handles such types.

Use of #error is added for cases of distinct types that are not
supported by the header, to indicate that additional work on the
header would be needed if, for example, _Float16 support were added to
glibc.  Given that #error, types with the same format as other types
are handled automatically by the sizeof-based logic, so the only case
needing special handling is that where _Float64x exists, has the same
format as _Float128, does not have the same format as long double, and
is not a typedef for _Float128.  In this case (which will apply for
powerpc64le once _Float64x support is added to glibc), the
__builtin_types_compatible_p calls testing for _Float128 need
corresponding calls testing for _Float64x, which this patch adds.

Tested for x86_64.

	* math/tgmath.h [__HAVE_DISTINCT_FLOAT16
	|| __HAVE_DISTINCT_FLOAT32 || __HAVE_DISTINCT_FLOAT64
	|| __HAVE_DISTINCT_FLOAT32X || __HAVE_DISTINCT_FLOAT64X
	|| __HAVE_DISTINCT_FLOAT128X]: Use #error.
	[__HAVE_DISTINCT_FLOAT128 && __GLIBC_USE (IEC_60559_TYPES_EXT)
	&& __HAVE_FLOAT64X && !__HAVE_FLOAT64X_LONG_DOUBLE
	&& __HAVE_FLOATN_NOT_TYPEDEF] (__TGMATH_F128): Handle _Float64x
	the same as _Float128.
	[__HAVE_DISTINCT_FLOAT128 && __GLIBC_USE (IEC_60559_TYPES_EXT)
	&& __HAVE_FLOAT64X && !__HAVE_FLOAT64X_LONG_DOUBLE
	&& __HAVE_FLOATN_NOT_TYPEDEF] (__TGMATH_CF128): Likewise.
parent 97255170
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment