https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81120
--- Comment #1 from John David Anglin <danglin at gcc dot gnu.org> ---
This seems quite tricky. Conversion changes a signaling nan to a quiet nan:
/* Make resulting NaN value to be qNaN. The caller has the
responsibility to avoid the operation if flag_signaling_nans
is on. */
if (r->cl == rvc_nan)
r->signalling = 0;
But the following results in a signaling nan:
extern int __issignaling (double);
int
main (void)
{
long double sNaN = __builtin_nansl ("");
if (!__issignaling((double)sNaN))
return 1;
return 0;
}