Bug#211661: gcc-3.3: With -std=c99, the NAN and INFINITY macros are not regarded as constants
reassign libc6-dev
thanks
On 2003-10-01 09:28:12 +0200, Vincent Lefevre wrote:
> Perhaps, but the definition of NAN in /usr/include/bits/nan.h
> uses a gcc extension:
>
> # define NAN \
> (__extension__ \
> ((union { unsigned __l __attribute__((__mode__(__SI__))); float __d; }) \
> { __l: 0x7fc00000UL }).__d)
>
> 0x7fc00000UL is a constant, and as here x.__d depends only on
> x.__l, x.__d could be regarded as a constant (note that there
> is no intermediate variable or whatever). This would be quite
> logical. But I don't know how such extensions are specified.
According to a friend of mine, the current libc6 construction for
NAN was supported (as a constant) by GCC 3.0, but this is no longer
correct as of GCC 3.1. As a consequence, glibc needs to be updated.
> BTW, the code is also a bit strange: __l is defined as an unsigned
> (= unsigned int), but 0x7fc00000UL is an unsigned long (this one
> is a glibc problem).
--
Vincent Lefèvre <vincent@vinc17.org> - Web: <http://www.vinc17.org/> - 100%
validated (X)HTML - Acorn Risc PC, Yellow Pig 17, Championnat International
des Jeux Mathématiques et Logiques, TETRHEX, etc.
Work: CR INRIA - computer arithmetic / SPACES project at LORIA
Reply to: