A little further investigation seems to indicate the following problem:
FLOAT_IS_IEEE_LITTLE and DOUBLE_IS_IEEE_LITTLE are both defined, though neither MAKE_INF() nor MAKE_NAN() work in either case.
HAVE_LDEXP and HAVE_ISNAN are both defined, and forcing those definitions to be used resolves 50 of the 59 failures.
I guess there's something wrong with IEEE floats and clang.
Bill
On Oct 2, 2012, at 1:45 AM, Marcus Comstedt (ACROSS) (Hail Ilpalazzo!) @ Pike (-) developers forum 10353@lyskom.lysator.liu.se wrote:
/Users/hww3/pike/src/modules/sprintf/testsuite.in:141: Test 108 (shift 0) failed. 1: mixed a() { return lower_case(sprintf("%f",Math.nan)[..2]); } 2: mixed b() { return "nan"; } 3:
o->a(): "0.0" o->b(): "nan"
Should we interpret this like clang not supporting the nan() function, part of the C standard?