https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104865
--- Comment #5 from Maciej W. Rozycki <macro at orcam dot me.uk> ---
Wrong question then. Should `__builtin_nan' even compile on non-IEEE-754
FP targets that don't have a qNaN? And I'll reply to myself.
According to our manual:
"-- Built-in Function: double __builtin_nan (const char *str)
This is an implementation of the ISO C99 function 'nan'."
and then according to ISO C99:
"The nan functions return a quiet NaN, if available, with content
indicated through tagp. If the implementation does not support quiet
NaNs, the functions return zero."
so firstly __builtin_isnan(__builtin_nan("")) is supposed to return 0
with the VAX target (because obviously 0.0 is not a NaN), and secondly
the compiled program is wrong as `_ZL3nan' is supposed to be set to
all-zeros (which is the representation of 0.0 datum with the VAX
floating-point format), and then `c1' and `c2' must likewise be both 0.
Both asserts are supposed to fail with the VAX target then (and similarly
PDP-11, which has a similar FP format).