bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

mingw isnanl-nolibm failure


From: Eric Blake
Subject: mingw isnanl-nolibm failure
Date: Tue, 4 Dec 2007 16:27:34 +0000 (UTC)
User-agent: Loom/3.14 (http://gmane.org/)

When compiling natively on mingw:

checking for float.h... yes
checking whether byte ordering is bigendian... no
checking whether isnan(long double) can be used without linking with libm... yes
checking whether isnanl works... no
checking where to find the exponent in a 'long double'... word 2 bit 0
checking where to find the exponent in a 'long double'... (cached) word 2 bit 0

and the resulting rpl_isnanl works.

But when cross-compiling:

checking for float.h... yes
checking whether isnan(long double) can be used without linking with libm... yes
checking whether isnanl works... guessing no
checking where to find the exponent in a 'long double'... unknown
checking where to find the exponent in a 'long double'... unknown

And the resulting rpl_isnanl fails on:

  { /* Pseudo-Denormal.  */
    static memory_long_double x =
      { LDBL80_WORDS (0x0000, 0x83333333, 0x00000000) };
    ASSERT (isnanl (x.value));
  }

because gcc 3.4.4 emitted code for (x == x) that returns true for pseudo-
denormal long doubles.

I'm not sure how to fix this, but it seems like rpl_isnanl needs to check for 
invalid x86 long double bit patterns before falling back to ==.

-- 
Eric Blake







reply via email to

[Prev in Thread] Current Thread [Next in Thread]