Rainer Orth <r...@cebitec.uni-bielefeld.de> writes:

> Ian Lance Taylor <i...@google.com> writes:
>
>> On SVID-based systems, when certain math functions encounter an
>> exceptional condition they call a magic function named matherr.  That
>> function is permitted to change the result which the math functions will
>> return.  a program is permitted to provide its own version of matherr.
>>
>> Solaris works this way and at least the Solaris version of matherr does
>> not act as Go, or an ordinary interpretation of the function, would
>> expect.  E.g., calling acos on an out-of-range value will return 0
>> rather than NaN.
>
> Unfortunately, this breaks the libgo build on Solaris 8 and 9:
>
> /vol/gcc/src/hg/trunk/local/libgo/runtime/go-matherr.c: In function 'matherr':
> /vol/gcc/src/hg/trunk/local/libgo/runtime/go-matherr.c:38:17: error: 'NAN' 
> undeclared (first use in this function)
> /vol/gcc/src/hg/trunk/local/libgo/runtime/go-matherr.c:38:17: note: each 
> undeclared identifier is reported only once for each function it appears in
> /vol/gcc/src/hg/trunk/local/libgo/runtime/go-matherr.c:68:28: error: 
> 'INFINITY' undeclared (first use in this function)
> make[4]: *** [go-matherr.lo] Error 1
>
> I couldn't find an appproprite replacement in the system headers.

Oh, wait, we can use __builtin_inf and __builtin_nan.

Ian

Reply via email to