https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70117
--- Comment #5 from joseph at codesourcery dot com <joseph at codesourcery dot com> --- The issue is that GCC internally handles IBM long double as having a 106-bit mantissa. There is one value that is larger than can be represented with a 106-bit mantissa, while still being finite and satisfying the rule that the two halves, added in round-to-nearest, produce the top half. In my view, isinf, isnan and isfinite for IBM long double should all be special-cased in GCC to call the corresponding operation on the top half of the number (for both hard and soft float). This is correct in all cases and more efficient than anything that needs to look at both halves. It should also be a lot easier than fixing LDBL_MAX by allowing numbers with mantissas wider than 106 bits.