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.

Reply via email to