Hi! On Mon, 18 Feb 2013 14:00:03 -0500, Carlos O'Donell wrote: > I think you should update the MIPS nan.h version to > match the generic version [...] Yes, I already had prepared such a patch and planned to commit it "as obvious", without discussion. Thusly pushed in commit 2636ffe65438af689e12b7977fe8609a6ca07c90: ports/ * sysdeps/mips/bits/nan.h: Align to generic IEEE 754 file. diff --git ports/sysdeps/mips/bits/nan.h ports/sysdeps/mips/bits/nan.h index ffbb3b5..af168ce 100644 --- ports/sysdeps/mips/bits/nan.h +++ ports/sysdeps/mips/bits/nan.h @@ -1,4 +1,4 @@ -/* `NAN' constant for IEEE 754 machines. +/* `NAN' constant for IEEE 754 machines. MIPS version. Copyright (C) 1992-2013 Free Software Foundation, Inc. This file is part of the GNU C Library. @@ -13,7 +13,7 @@ Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see + License along with the GNU C Library; if not, see . */ #ifndef _MATH_H @@ -21,20 +21,21 @@ #endif -/* IEEE Not A Number (QNaN). Note that MIPS has the QNaN and SNaN patterns - reversed compared to most other architectures. The IEEE spec left - the definition of this open to implementations, and for MIPS the top - bit of the mantissa must be SET to indicate a SNaN. */ +/* IEEE Not A Number. */ +/* Note that MIPS has the QNaN and SNaN patterns reversed compared to most + other architectures. The IEEE spec left the definition of this open to + implementations, and for MIPS the top bit of the mantissa must be SET to + indicate a SNaN. */ #if __GNUC_PREREQ(3,3) -# define NAN (__builtin_nanf("")) +# define NAN (__builtin_nanf ("")) #elif defined __GNUC__ # define NAN \ - (__extension__ \ - ((union { unsigned __l __attribute__((__mode__(__SI__))); float __d; }) \ + (__extension__ \ + ((union { unsigned __l __attribute__ ((__mode__ (__SI__))); float __d; }) \ { __l: 0x7fbfffffUL }).__d) #else I also added . On Mon, 18 Feb 2013 14:41:02 -0500, Carlos O'Donell wrote: > On Mon, Feb 18, 2013 at 2:21 PM, Richard Henderson wrote: > > On 02/18/2013 11:00 AM, Carlos O'Donell wrote: > >>> > static union { unsigned char __c[4]; float __d; } __nan_union > >>> > - __attribute_used__ = { __nan_bytes }; > >>> > + = { __nan_bytes }; > >>> > # define NAN (__nan_union.__d) > >>> > > >>> > #endif /* GCC. */ In commit 72f0ffdcbeb8135d04cf2dc73f8a5f5c7783a283, I first add the missing __attribute_used__: ports/ * sysdeps/mips/bits/nan.h [!__GNUC__] (__nan_union): Add __attribute_used__. diff --git ports/sysdeps/mips/bits/nan.h ports/sysdeps/mips/bits/nan.h index af168ce..71f372d 100644 --- ports/sysdeps/mips/bits/nan.h +++ ports/sysdeps/mips/bits/nan.h @@ -49,7 +49,8 @@ # define __nan_bytes { 0xff, 0xff, 0xbf, 0x7f } # endif -static union { unsigned char __c[4]; float __d; } __nan_union = { __nan_bytes }; +static union { unsigned char __c[4]; float __d; } __nan_union + __attribute_used__ = { __nan_bytes }; # define NAN (__nan_union.__d) #endif /* GCC. */ > >> I disagree, it's useful to mark the non-GCC version with > >> an __attribute_used__ such that in the future we might > >> use another compiler without problems. > > > > The annotation should not be attribute used at all, but rather unused. Good catch, thanks! > glibc doesn't have an __attribute_unused__. It doesn't need one; per 's __attribute_used__ definition, we assume that any compiler that supports __attribute__ at all also supports __attribute__ ((unused)). So, I see no reason to introduce __attribute_unused__ bit instead directly use __attribute__ ((unused)); commit c7b275d6b3bceb6b400fa3044d13d1001bc605ca: * sysdeps/ieee754/bits/nan.h [!__GNUC__] (__nan_union): Change __attribute_used__ to __attribute__ ((unused)). ports/ * sysdeps/mips/bits/nan.h [!__GNUC__] (__nan_union): Change __attribute_used__ to __attribute__ ((unused)). diff --git ports/sysdeps/mips/bits/nan.h ports/sysdeps/mips/bits/nan.h index 71f372d..8f4666d 100644 --- ports/sysdeps/mips/bits/nan.h +++ ports/sysdeps/mips/bits/nan.h @@ -50,7 +50,7 @@ # endif static union { unsigned char __c[4]; float __d; } __nan_union - __attribute_used__ = { __nan_bytes }; + __attribute__ ((unused)) = { __nan_bytes }; # define NAN (__nan_union.__d) #endif /* GCC. */ diff --git sysdeps/ieee754/bits/nan.h sysdeps/ieee754/bits/nan.h index d3ab38b..a1e6a51 100644 --- sysdeps/ieee754/bits/nan.h +++ sysdeps/ieee754/bits/nan.h @@ -46,7 +46,7 @@ # endif static union { unsigned char __c[4]; float __d; } __nan_union - __attribute_used__ = { __nan_bytes }; + __attribute__ ((unused)) = { __nan_bytes }; # define NAN (__nan_union.__d) #endif /* GCC. */ Grüße, Thomas