In article <OFDC7A1FAA.CD90E9D1-ONC22570F5.004629FE-C22570F5.00470914 / stonesoft.com>,
  ville.mattila / stonesoft.com writes:

>  1. The isinf is not regognized by autoconf library guesser, so it gets
> undefined and
>       the missing/isinf.c is used, which will get compilation error.
>       Solution is to force isinf to defined and -lm to be added to LIBS
> when solaris is configured.

I found a description about isinf in autoconf.texi.
It seems that AC_REPLACE_FUNCS is not appropriate for isinf.

http://cvs.savannah.gnu.org/viewcvs/autoconf/doc/?root=autoconf

| @item @code{isinf}
| @itemx @code{isnan}
| @c @fuindex isinf
| @c @fuindex isnan
| @prindex @code{isinf}
| @prindex @code{isnan}
| The ISO C99 standard specifies that @code{isinf} and @code{isnan} are
| macros.  On some systems just macros are available (e.g., HP-UX), on
| some systems both macros and functions (e.g., glibc 2.3.2), and on some
| systems only functions (e.g., IRIX 6 and Solaris 9).  In some cases
| these functions are declared in nonstandard headers like
| @code{<sunmath.h>} and defined in non-default libraries like
| @option{-lm} or @option{-lsunmath}.
| 
| The C99 @code{isinf} and @code{isnan} macros work correctly with
| @code{long double} arguments, but pre-C99 systems that use functions
| typically assume @code{double} arguments.  On such a system,
| @code{isinf} incorrectly returns true for a finite @code{long double}
| argument that is outside the range of @code{double}.
| 
| To work around this porting mess, you can use code like the following.
| 
| @smallexample
| #include <math.h>
| 
| #ifndef isnan
| # define isnan(x) \
|     (sizeof (x) == sizeof (long double) ? isnan_ld (x) \
|      : sizeof (x) == sizeof (double) ? isnan_d (x) \
|      : isnan_f (x))
| static inline int isnan_f  (float       x) @{ return x != x; @}
| static inline int isnan_d  (double      x) @{ return x != x; @}
| static inline int isnan_ld (long double x) @{ return x != x; @}
| #endif
| 
| #ifndef isinf
| # define isinf(x) \
|     (sizeof (x) == sizeof (long double) ? isinf_ld (x) \
|      : sizeof (x) == sizeof (double) ? isinf_d (x) \
|      : isinf_f (x))
| static inline int isinf_f  (float       x) @{ return isnan (x - x); @}
| static inline int isinf_d  (double      x) @{ return isnan (x - x); @}
| static inline int isinf_ld (long double x) @{ return isnan (x - x); @}
| #endif
| @end smallexample
| 
| Use @code{AC_C_INLINE} (@pxref{C Compiler}) so that this code works on
| compilers that lack the @code{inline} keyword.  Some optimizing
| compilers mishandle these definitions, but systems with that bug
| typically have missing or broken @code{isnan} functions anyway, so it's
| probably not worth worrying about.
-- 
Tanaka Akira