[Bug tree-optimization/86367] FRE1 tree pass deletes code in gcc.target/powerpc/nan128-1.c when long double is IEEE 128
joseph at codesourcery dot com
gcc-bugzilla@gcc.gnu.org
Sat Jun 30 20:03:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86367
--- Comment #7 from joseph at codesourcery dot com <joseph at codesourcery dot com> ---
If you use __builtin_nansf128 (which returns _Float128) but __float128 is
long double, it's possible the implicit conversion from storing the result
of __builtin_nansq in y.value results in converting a signaling NaN to a
quiet NaN (it's unspecified whether conversion by assignment to the same
floating-point format is a convertFormat or copy operation).
If that's what's going on, then, given that __builtin_nansq etc.
correspond to the type name __float128 (not to _Float128), those built-in
functions (all the *q ones) should be mapped to those for whatever type
__float128 is equivalent to, to avoid such conversions of signaling to
quiet NaNs. I.e., if the issue is such an implicit conversion of
signaling to quiet NaN, the patch attached to this issue is using the
right approach for a fix.
More information about the Gcc-bugs
mailing list