Do not declare _Float128 support for powerpc64le -mlong-double-64 (bug 22402).

System Internals / glibc - Joseph Myers [codesourcery.com] - 6 November 2017 13:26 EST

The powerpc bits/floatn.h declares _Float128 support to be present when the compiler supports it for powerpc64le. However, in the case where -mlong-double-64 is used, __MATH_TG does not actually support _Float128; it only supports _Float128 in the distinct-long-double case.

This shows up as a build failure when building glibc mainline with GCC mainline, given the recently added sanity check in math.h for configurations supported by __MATH_TG, as the compat code for-mlong-double-64 fails to build. However, the bug was logically present before that change (including in 2.26), just less visible.

This patch fixes the build failure by declaring _Float128 to be unsupported in that case. (Of course this can't actually stop users calling the type-generic macros with _Float128 arguments with-mlong-double-64, just as they could be called with other unsupported types on other platforms, but perhaps makes it less likely by making all the type-specific _Float128 interfaces invisible in that case.)

Tested compilation for powerpc64le with build-many-glibcs.py.

[BZ #22402]
- sysdeps/powerpc/bits/floatn.h: Include . [__NO_LONG_DOUBLE_MATH] (__HAVE_FLOAT128): Define to 0.

4e2dff67be Do not declare _Float128 support for powerpc64le -mlong-double-64 (bug 22402).
ChangeLog | 6 ++++++
sysdeps/powerpc/bits/floatn.h | 3 ++-
2 files changed, 8 insertions(+), 1 deletion(-)

Upstream: sourceware.org


  • Share