Eric Botcazou <[EMAIL PROTECTED]> writes:

>> Why does the compilation of b.c fail, while that of a.c succeeds with
>> gcc-4.0.0 or later?
>
> Because the call to isinf is optimized away even at -O0 in the latter case 
> (isinf being a pure function), but not in the former.  That could be deemed 
> a little questionable though.  The gap is eliminated at -O1.

Thank you for explication.  Is it gcc's expected behavior?

The configure script which is included in rrdtool[1] checks whether
the system has isinf() as below.

#include <math.h>
int
main ()
{
float f = 0.0; isinf(f)
  ;
  return 0;
}

If above compilation is success, the configure script defines
HAVE_ISINF macro.  The prior version to gcc-4.0.0 above compilation
fails, so below isinf macro is defined. But gcc-4.0.0 or later it
succeeds, so below isinf macro is not defind though the system doesn't
have isinf().

/* Solaris */
#if (! defined(HAVE_ISINF) && defined(HAVE_FPCLASS))
#  define HAVE_ISINF 1
#  define isinf(a) (fpclass(a) == FP_NINF || fpclass(a) == FP_PINF)
#endif

Is this gcc's problem?  Or should I contact rrdtool's developer?

Regards.

[1] <URL:http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/>

-- 
Hiroshi Fujishima

Reply via email to