on targets where long double has the right semantics the
public math header may typedef _Float128 even if the
compiler has its own _Float128 definition.
#if !defined __FLT128_MANT_DIG__ || defined __cplusplus
#if !__GNUC_PREREQ (7, 0) || defined __cplusplus
to check if compiler lacks _Float128 support since it
works for both gcc and clang.
clang trunk supports _Float128 since
but they don't seem to support the f128 constant suffix
(only q) nor the __builtin_inff128 etc builtins so a bit
more change is required to make the headers work with it,
and it's not clear how to check for those features
(other than ifdef __clang__), however changing the headers
to be able to work with other compilers is useful anyway.
FYI, f128 intrinsics were added a few days ago:
(Conversions are still lacking though.)
At some point it might make sense to have a prereq macro that checks __clang_major__ and __clang_minor__.
clang reverted the _Float128 definition for now: