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

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: