------- Additional Comments From jsm28 at gcc dot gnu dot org 2005-03-22 20:52 ------- The following definitions should replace the Solaris ones outright for GCC. This has been reported to Sun, so fixes for these should be disabled for any future header mentioning __GNUC__.
#define HUGE_VAL (__builtin_huge_val()) #define HUGE_VALF (__builtin_huge_valf()) #define HUGE_VALL (__builtin_huge_vall()) #define INFINITY (__builtin_inff()) #define NAN (__builtin_nanf("")) #define isgreater(x, y) __builtin_isgreater(x, y) #define isgreaterequal(x, y) __builtin_isgreaterequal(x, y) #define isless(x, y) __builtin_isless(x, y) #define islessequal(x, y) __builtin_islessequal(x, y) #define islessgreater(x, y) __builtin_islessgreater(x, y) #define isunordered(u, v) __builtin_isunordered(u, v) __builtin_isinf and __builtin_signbit are not currently entirely suited to the uses to which they are being put. For __builtin_isinf this is bug 20558. For __builtin_signbit, it ought to be type-generic but avoid falling back to the wrong function or a function the library does not have. (The Solaris libc doesn't seem to have isinf or signbit library functions.) GCC does not yet have __builtin_isfinite or __builtin_isnormal functions; they would be generically useful additions if they always avoided falling back to a library function. __builtin_fpclassify would also be useful but would only be usable where GCC is configured to know the FP_* values used on a given target. In principle all the macros can be defined along the lines of the isnan/isfinite/isinf definitions in libgcc2.c, with GNU extensions to avoid multiple evaluation, but this is not very efficient. -- What |Removed |Added ---------------------------------------------------------------------------- CC| |ro at techfak dot uni- | |bielefeld dot de, jsm28 at | |gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19933