This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Make fenv.h FE_* macros usable in #if (bug 3439)


This patch fixes the remaining part of bug 3439, FE_* constants in
fenv.h not being usable in #if, in the same way as my recent fix for
math.h constants (as suggested by Paul Eggert in that bug).

I've only addressed constants that previously used the "#define FE_FOO
FE_FOO" form (whether or not those particular constants were standard
ones), not various extensions such as __FE_UNDEFINED that did not have
corresponding macros at all.

The constants in question are defined after this patch to have type
int, whether or now the expressions previously given for enum values
had type int.  In ISO C, all enum constants have type int whatever the
type of the expressions given to them, and those expressions must have
values representable in int.  The SPARC header previously gave
constants values 2U << 30 and 3U << 30 that would have meant a GNU
extension, enum constants with a type other than int because the
values aren't representable in int, was involved.  As these values are
passed to fesetround (argument type int) and returned from fegetround
(return type int), it doesn't really make sense to have values not
representable as int and int seems the most sensible type for the
constants.  So those SPARC constants are changed to the negative
values of type int that would have resulted from converting those
expressions to int.

Tested x86_64.  conform/ test results should (in the absence of
architecture-specific header bugs) after this patch be clean for all
of ISO, ISO99, ISO11 (provided you use GCC 4.7 or greater when
testing), POSIX (although this doesn't mean they stay clean, if the
tests are improved to cover those standards better and this shows up
places where standard requirements aren't implemented).

2012-11-03  Joseph Myers  <joseph@codesourcery.com>

	[BZ #3439]
	* sysdeps/powerpc/bits/fenv.h (FE_INEXACT): Define macro to
	integer constant usable in #if and use that to give value to enum
	constant.
	(FE_DIVBYZERO): Likewise.
	(FE_UNDERFLOW): Likewise.
	(FE_OVERFLOW): Likewise.
	(FE_INVALID): Likewise.
	(FE_INVALID_SNAN): Likewise.
	(FE_INVALID_ISI): Likewise.
	(FE_INVALID_IDI): Likewise.
	(FE_INVALID_ZDZ): Likewise.
	(FE_INVALID_IMZ): Likewise.
	(FE_INVALID_COMPARE): Likewise.
	(FE_INVALID_SOFTWARE): Likewise.
	(FE_INVALID_SQRT): Likewise.
	(FE_INVALID_INTEGER_CONVERSION): Likewise.
	(FE_TONEAREST): Likewise.
	(FE_TOWARDZERO): Likewise.
	(FE_UPWARD): Likewise.
	(FE_DOWNWARD): Likewise.
	* sysdeps/s390/fpu/bits/fenv.h (FE_INVALID): Likewise.
	(FE_DIVBYZERO): Likewise.
	(FE_OVERFLOW): Likewise.
	(FE_UNDERFLOW): Likewise.
	(FE_INEXACT): Likewise.
	(FE_TONEAREST): Likewise.
	(FE_DOWNWARD): Likewise.
	(FE_UPWARD): Likewise.
	(FE_TOWARDZERO): Likewise.
	* sysdeps/sh/sh4/fpu/bits/fenv.h (FE_INEXACT): Likewise.
	(FE_UNDERFLOW): Likewise.
	(FE_OVERFLOW): Likewise.
	(FE_DIVBYZERO): Likewise.
	(FE_INVALID): Likewise.
	(FE_TONEAREST): Likewise.
	(FE_TOWARDZERO): Likewise.
	* sysdeps/sparc/fpu/bits/fenv.h (FE_INVALID): Likewise.
	(FE_OVERFLOW): Likewise.
	(FE_UNDERFLOW): Likewise.
	(FE_DIVBYZERO): Likewise.
	(FE_INEXACT): Likewise.
	(FE_TONEAREST): Likewise.
	(FE_TOWARDZERO): Likewise.
	(FE_UPWARD): Likewise.
	(FE_DOWNWARD): Likewise.
	* sysdeps/x86/fpu/bits/fenv.h (FE_INVALID): Likewise.
	(FE_DIVBYZERO): Likewise.
	(FE_OVERFLOW): Likewise.
	(FE_UNDERFLOW): Likewise.
	(FE_INEXACT): Likewise.
	(FE_TONEAREST): Likewise.
	(FE_DOWNWARD): Likewise.
	(FE_UPWARD): Likewise.
	(FE_TOWARDZERO): Likewise.


2012-11-03  Joseph Myers  <joseph@codesourcery.com>

	[BZ #3439]
	* sysdeps/alpha/fpu/bits/fenv.h (FE_DENORMAL): Define macro to
	integer constant usable in #if and use that to give value to enum
	constant.
	(FE_INEXACT): Likewise.
	(FE_UNDERFLOW): Likewise.
	(FE_OVERFLOW): Likewise.
	(FE_DIVBYZERO): Likewise.
	(FE_INVALID): Likewise.
	(FE_ALL_EXCEPT): Likewise.
	(FE_TOWARDZERO): Likewise.
	(FE_DOWNWARD): Likewise.
	(FE_TONEAREST): Likewise.
	(FE_UPWARD): Likewise.

2012-11-03  Joseph Myers  <joseph@codesourcery.com>

	[BZ #3439]
	* sysdeps/am33/fpu/bits/fenv.h (FE_INEXACT): Define macro to
	integer constant usable in #if and use that to give value to enum
	constant.
	(FE_UNDERFLOW): Likewise.
	(FE_OVERFLOW): Likewise.
	(FE_DIVBYZERO): Likewise.
	(FE_INVALID): Likewise.
	(FE_TONEAREST): Likewise.

2012-11-03  Joseph Myers  <joseph@codesourcery.com>

	[BZ #3439]
	* sysdeps/arm/bits/fenv.h (FE_INVALID): Define macro to integer
	constant usable in #if and use that to give value to enum
	constant.
	(FE_DIVBYZERO): Likewise.
	(FE_OVERFLOW): Likewise.
	(FE_UNDERFLOW): Likewise.
	(FE_INEXACT): Likewise.
	(FE_TONEAREST): Likewise.
	(FE_UPWARD): Likewise.
	(FE_DOWNWARD): Likewise.
	(FE_TOWARDZERO): Likewise.

2012-11-03  Joseph Myers  <joseph@codesourcery.com>

	[BZ #3439]
	* sysdeps/hppa/fpu/bits/fenv.h (FE_INVALID): Define macro to
	integer constant usable in #if and use that to give value to enum
	constant.
	(FE_DIVBYZERO): Likewise.
	(FE_OVERFLOW): Likewise.
	(FE_UNDERFLOW): Likewise.
	(FE_INEXACT): Likewise.
	(FE_TONEAREST): Likewise.
	(FE_TOWARDZERO): Likewise.
	(FE_UPWARD): Likewise.
	(FE_DOWNWARD): Likewise.

2012-11-03  Joseph Myers  <joseph@codesourcery.com>

	[BZ #3439]
	* sysdeps/ia64/bits/fenv.h (FE_INEXACT): Define macro to integer
	constant usable in #if and use that to give value to enum
	constant.
	(FE_UNDERFLOW): Likewise.
	(FE_OVERFLOW): Likewise.
	(FE_DIVBYZERO): Likewise.
	(FE_UNNORMAL): Likewise.
	(FE_INVALID): Likewise.
	(FE_ALL_EXCEPT): Likewise.
	(FE_TOWARDZERO): Likewise.
	(FE_UPWARD): Likewise.
	(FE_DOWNWARD): Likewise.
	(FE_TONEAREST): Likewise.

2012-11-03  Joseph Myers  <joseph@codesourcery.com>

	[BZ #3439]
	* sysdeps/m68k/fpu/bits/fenv.h (FE_INEXACT): Define macro to
	integer constant usable in #if and use that to give value to enum
	constant.
	(FE_DIVBYZERO): Likewise.
	(FE_UNDERFLOW): Likewise.
	(FE_OVERFLOW): Likewise.
	(FE_INVALID): Likewise.
	(FE_TONEAREST): Likewise.
	(FE_TOWARDZERO): Likewise.
	(FE_DOWNWARD): Likewise.
	(FE_UPWARD): Likewise.

2012-11-03  Joseph Myers  <joseph@codesourcery.com>

	[BZ #3439]
	* sysdeps/mips/bits/fenv.h (FE_INEXACT): Define macro to integer
	constant usable in #if and use that to give value to enum
	constant.
	(FE_UNDERFLOW): Likewise.
	(FE_OVERFLOW): Likewise.
	(FE_DIVBYZERO): Likewise.
	(FE_INVALID): Likewise.
	(FE_TONEAREST): Likewise.
	(FE_TOWARDZERO): Likewise.
	(FE_UPWARD): Likewise.
	(FE_DOWNWARD): Likewise.

2012-11-03  Joseph Myers  <joseph@codesourcery.com>

	[BZ #3439]
	* sysdeps/tile/bits/fenv.h (FE_TONEAREST): Define macro to integer
	constant usable in #if and use that to give value to enum
	constant.

diff --git a/ports/sysdeps/alpha/fpu/bits/fenv.h b/ports/sysdeps/alpha/fpu/bits/fenv.h
index 2ddbaa1..9edbe76 100644
--- a/ports/sysdeps/alpha/fpu/bits/fenv.h
+++ b/ports/sysdeps/alpha/fpu/bits/fenv.h
@@ -36,27 +36,34 @@
 enum
   {
 #ifdef __USE_GNU
-    FE_DENORMAL =	1UL << 22,
-#define FE_DENORMAL	FE_DENORMAL
+    FE_DENORMAL =
+#define FE_DENORMAL	(1 << 22)
+      FE_DENORMAL,
 #endif
 
-    FE_INEXACT =	1UL << 21,
-#define FE_INEXACT	FE_INEXACT
+    FE_INEXACT =
+#define FE_INEXACT	(1 << 21)
+      FE_INEXACT,
 
-    FE_UNDERFLOW =	1UL << 20,
-#define FE_UNDERFLOW	FE_UNDERFLOW
+    FE_UNDERFLOW =
+#define FE_UNDERFLOW	(1 << 20)
+      FE_UNDERFLOW,
 
-    FE_OVERFLOW =	1UL << 19,
-#define FE_OVERFLOW	FE_OVERFLOW
+    FE_OVERFLOW =
+#define FE_OVERFLOW	(1 << 19)
+      FE_OVERFLOW,
 
-    FE_DIVBYZERO =	1UL << 18,
-#define FE_DIVBYZERO	FE_DIVBYZERO
+    FE_DIVBYZERO =
+#define FE_DIVBYZERO	(1 << 18)
+      FE_DIVBYZERO,
 
-    FE_INVALID =	1UL << 17,
-#define FE_INVALID	FE_INVALID
+    FE_INVALID =
+#define FE_INVALID	(1 << 17)
+      FE_INVALID,
 
-    FE_ALL_EXCEPT =	0x3f << 17
-#define FE_ALL_EXCEPT	FE_ALL_EXCEPT
+    FE_ALL_EXCEPT =
+#define FE_ALL_EXCEPT	(0x3f << 17)
+      FE_ALL_EXCEPT
   };
 
 /* Alpha chips support all four defined rouding modes.
@@ -70,17 +77,21 @@ enum
 
 enum
   {
-    FE_TOWARDZERO =	0,
-#define FE_TOWARDZERO	FE_TOWARDZERO
+    FE_TOWARDZERO =
+#define FE_TOWARDZERO	0
+      FE_TOWARDZERO,
 
-    FE_DOWNWARD = 	1,
-#define FE_DOWNWARD	FE_DOWNWARD
+    FE_DOWNWARD =
+#define FE_DOWNWARD	1
+      FE_DOWNWARD,
 
-    FE_TONEAREST =	2,
-#define FE_TONEAREST	FE_TONEAREST
+    FE_TONEAREST =
+#define FE_TONEAREST	2
+      FE_TONEAREST,
 
-    FE_UPWARD =		3,
-#define FE_UPWARD	FE_UPWARD
+    FE_UPWARD =
+#define FE_UPWARD	3
+      FE_UPWARD,
   };
 
 #ifdef __USE_GNU
diff --git a/ports/sysdeps/am33/fpu/bits/fenv.h b/ports/sysdeps/am33/fpu/bits/fenv.h
index d3a8998..b0e60e9 100644
--- a/ports/sysdeps/am33/fpu/bits/fenv.h
+++ b/ports/sysdeps/am33/fpu/bits/fenv.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998, 1999, 2000, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 1998-2012 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Alexandre Oliva <aoliva@redhat.com>
    based on the corresponding file in the mips port.
@@ -26,16 +26,21 @@
    positions of the appropriate bits in the FPCR register.  */
 enum
   {
-    FE_INEXACT = 0x01,
-#define FE_INEXACT	FE_INEXACT
-    FE_UNDERFLOW = 0x02,
-#define FE_UNDERFLOW	FE_UNDERFLOW
-    FE_OVERFLOW = 0x04,
-#define FE_OVERFLOW	FE_OVERFLOW
-    FE_DIVBYZERO = 0x08,
-#define FE_DIVBYZERO	FE_DIVBYZERO
-    FE_INVALID = 0x10,
-#define FE_INVALID	FE_INVALID
+    FE_INEXACT =
+#define FE_INEXACT	0x01
+      FE_INEXACT,
+    FE_UNDERFLOW =
+#define FE_UNDERFLOW	0x02
+      FE_UNDERFLOW,
+    FE_OVERFLOW =
+#define FE_OVERFLOW	0x04
+      FE_OVERFLOW,
+    FE_DIVBYZERO =
+#define FE_DIVBYZERO	0x08
+      FE_DIVBYZERO,
+    FE_INVALID =
+#define FE_INVALID	0x10
+      FE_INVALID,
   };
 
 #define FE_ALL_EXCEPT \
@@ -45,8 +50,9 @@ enum
    reserved to represent other rounding modes.  */
 enum
   {
-    FE_TONEAREST = 0x00000,
-#define FE_TONEAREST	FE_TONEAREST
+    FE_TONEAREST =
+#define FE_TONEAREST	0x00000
+      FE_TONEAREST,
   };
 
 
diff --git a/ports/sysdeps/arm/bits/fenv.h b/ports/sysdeps/arm/bits/fenv.h
index 006ccf5..6788e28 100644
--- a/ports/sysdeps/arm/bits/fenv.h
+++ b/ports/sysdeps/arm/bits/fenv.h
@@ -22,16 +22,21 @@
 /* Define bits representing exceptions in the FPU status word.  */
 enum
   {
-    FE_INVALID = 1,
-#define FE_INVALID FE_INVALID
-    FE_DIVBYZERO = 2,
-#define FE_DIVBYZERO FE_DIVBYZERO
-    FE_OVERFLOW = 4,
-#define FE_OVERFLOW FE_OVERFLOW
-    FE_UNDERFLOW = 8,
-#define FE_UNDERFLOW FE_UNDERFLOW
-    FE_INEXACT = 16,
-#define FE_INEXACT FE_INEXACT
+    FE_INVALID =
+#define FE_INVALID	1
+      FE_INVALID,
+    FE_DIVBYZERO =
+#define FE_DIVBYZERO	2
+      FE_DIVBYZERO,
+    FE_OVERFLOW =
+#define FE_OVERFLOW	4
+      FE_OVERFLOW,
+    FE_UNDERFLOW =
+#define FE_UNDERFLOW	8
+      FE_UNDERFLOW,
+    FE_INEXACT =
+#define FE_INEXACT	16
+      FE_INEXACT,
   };
 
 /* Amount to shift by to convert an exception to a mask bit.  */
@@ -44,14 +49,18 @@ enum
 /* VFP supports all of the four defined rounding modes.  */
 enum
   {
-    FE_TONEAREST = 0,
-#define FE_TONEAREST FE_TONEAREST
-    FE_UPWARD = 0x400000,
-#define FE_UPWARD FE_UPWARD
-    FE_DOWNWARD = 0x800000,
-#define FE_DOWNWARD FE_DOWNWARD
-    FE_TOWARDZERO = 0xc00000
-#define FE_TOWARDZERO FE_TOWARDZERO
+    FE_TONEAREST =
+#define FE_TONEAREST	0
+      FE_TONEAREST,
+    FE_UPWARD =
+#define FE_UPWARD	0x400000
+      FE_UPWARD,
+    FE_DOWNWARD =
+#define FE_DOWNWARD	0x800000
+      FE_DOWNWARD,
+    FE_TOWARDZERO =
+#define FE_TOWARDZERO	0xc00000
+      FE_TOWARDZERO
   };
 
 /* Type representing exception flags. */
diff --git a/ports/sysdeps/hppa/fpu/bits/fenv.h b/ports/sysdeps/hppa/fpu/bits/fenv.h
index 6af5dde..0618b1b 100644
--- a/ports/sysdeps/hppa/fpu/bits/fenv.h
+++ b/ports/sysdeps/hppa/fpu/bits/fenv.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2012 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by David Huggins-Daines <dhd@debian.org>
 
@@ -26,16 +26,21 @@
    27 bits).  */
 enum
 {
-  FE_INVALID   = 1<<4, /* V */
-#define FE_INVALID	FE_INVALID
-  FE_DIVBYZERO = 1<<3, /* Z */
-#define FE_DIVBYZERO	FE_DIVBYZERO
-  FE_OVERFLOW  = 1<<2, /* O */
-#define FE_OVERFLOW	FE_OVERFLOW
-  FE_UNDERFLOW = 1<<1, /* U */
-#define FE_UNDERFLOW	FE_UNDERFLOW
-  FE_INEXACT   = 1<<0, /* I */
-#define FE_INEXACT	FE_INEXACT
+  FE_INVALID =
+#define FE_INVALID	(1<<4) /* V */
+    FE_INVALID,
+  FE_DIVBYZERO =
+#define FE_DIVBYZERO	(1<<3) /* Z */
+    FE_DIVBYZERO,
+  FE_OVERFLOW =
+#define FE_OVERFLOW	(1<<2) /* O */
+    FE_OVERFLOW,
+  FE_UNDERFLOW =
+#define FE_UNDERFLOW	(1<<1) /* U */
+    FE_UNDERFLOW,
+  FE_INEXACT =
+#define FE_INEXACT	(1<<0) /* I */
+    FE_INEXACT,
 };
 
 #define FE_ALL_EXCEPT \
@@ -46,14 +51,18 @@ enum
    register for the appropriate macros.  */
 enum
   {
-    FE_TONEAREST  = 0 << 9,
-#define FE_TONEAREST	FE_TONEAREST
-    FE_TOWARDZERO = 1 << 9,
-#define FE_TOWARDZERO	FE_TOWARDZERO
-    FE_UPWARD     = 2 << 9,
-#define FE_UPWARD	FE_UPWARD
-    FE_DOWNWARD   = 3 << 9,
-#define FE_DOWNWARD	FE_DOWNWARD
+    FE_TONEAREST =
+#define FE_TONEAREST	(0 << 9)
+      FE_TONEAREST,
+    FE_TOWARDZERO =
+#define FE_TOWARDZERO	(1 << 9)
+      FE_TOWARDZERO,
+    FE_UPWARD =
+#define FE_UPWARD	(2 << 9)
+      FE_UPWARD,
+    FE_DOWNWARD =
+#define FE_DOWNWARD	(3 << 9)
+      FE_DOWNWARD,
   };
 
 /* Type representing exception flags. */
diff --git a/ports/sysdeps/ia64/bits/fenv.h b/ports/sysdeps/ia64/bits/fenv.h
index 342605d..7b5a753 100644
--- a/ports/sysdeps/ia64/bits/fenv.h
+++ b/ports/sysdeps/ia64/bits/fenv.h
@@ -25,43 +25,53 @@
 
 enum
   {
-    FE_INEXACT =	1UL << 5,
-#define FE_INEXACT	FE_INEXACT
+    FE_INEXACT =
+#define FE_INEXACT	(1 << 5)
+      FE_INEXACT,
 
-    FE_UNDERFLOW =	1UL << 4,
-#define FE_UNDERFLOW	FE_UNDERFLOW
+    FE_UNDERFLOW =
+#define FE_UNDERFLOW	(1 << 4)
+      FE_UNDERFLOW,
 
-    FE_OVERFLOW =	1UL << 3,
-#define FE_OVERFLOW	FE_OVERFLOW
+    FE_OVERFLOW =
+#define FE_OVERFLOW	(1 << 3)
+      FE_OVERFLOW,
 
-    FE_DIVBYZERO =	1UL << 2,
-#define FE_DIVBYZERO	FE_DIVBYZERO
+    FE_DIVBYZERO =
+#define FE_DIVBYZERO	(1 << 2)
+      FE_DIVBYZERO,
 
-    FE_UNNORMAL =	1UL << 1,
-#define FE_UNNORMAL	FE_UNNORMAL
+    FE_UNNORMAL =
+#define FE_UNNORMAL	(1 << 1)
+      FE_UNNORMAL,
 
-    FE_INVALID =	1UL << 0,
-#define FE_INVALID	FE_INVALID
+    FE_INVALID =
+#define FE_INVALID	(1 << 0)
+      FE_INVALID,
 
     FE_ALL_EXCEPT =
-	(FE_INEXACT | FE_UNDERFLOW | FE_OVERFLOW | FE_DIVBYZERO | FE_UNNORMAL | FE_INVALID)
-#define FE_ALL_EXCEPT	FE_ALL_EXCEPT
+#define FE_ALL_EXCEPT	(FE_INEXACT | FE_UNDERFLOW | FE_OVERFLOW | FE_DIVBYZERO | FE_UNNORMAL | FE_INVALID)
+      FE_ALL_EXCEPT
   };
 
 
 enum
   {
-    FE_TOWARDZERO =	3,
-#define FE_TOWARDZERO	FE_TOWARDZERO
+    FE_TOWARDZERO =
+#define FE_TOWARDZERO	3
+      FE_TOWARDZERO,
 
-    FE_UPWARD =		2,
-#define FE_UPWARD	FE_UPWARD
+    FE_UPWARD =
+#define FE_UPWARD	2
+      FE_UPWARD,
 
-    FE_DOWNWARD = 	1,
-#define FE_DOWNWARD	FE_DOWNWARD
+    FE_DOWNWARD =
+#define FE_DOWNWARD	1
+      FE_DOWNWARD,
 
-    FE_TONEAREST =	0,
-#define FE_TONEAREST	FE_TONEAREST
+    FE_TONEAREST =
+#define FE_TONEAREST	0
+      FE_TONEAREST,
   };
 
 
diff --git a/ports/sysdeps/m68k/fpu/bits/fenv.h b/ports/sysdeps/m68k/fpu/bits/fenv.h
index c98365a..584514c 100644
--- a/ports/sysdeps/m68k/fpu/bits/fenv.h
+++ b/ports/sysdeps/m68k/fpu/bits/fenv.h
@@ -24,16 +24,21 @@
    the appropriate bits in the FPSR Accrued Exception Byte.  */
 enum
   {
-    FE_INEXACT = 1 << 3,
-#define FE_INEXACT	FE_INEXACT
-    FE_DIVBYZERO = 1 << 4,
-#define FE_DIVBYZERO	FE_DIVBYZERO
-    FE_UNDERFLOW = 1 << 5,
-#define FE_UNDERFLOW	FE_UNDERFLOW
-    FE_OVERFLOW = 1 << 6,
-#define FE_OVERFLOW	FE_OVERFLOW
-    FE_INVALID = 1 << 7
-#define FE_INVALID	FE_INVALID
+    FE_INEXACT =
+#define FE_INEXACT	(1 << 3)
+      FE_INEXACT,
+    FE_DIVBYZERO =
+#define FE_DIVBYZERO	(1 << 4)
+      FE_DIVBYZERO,
+    FE_UNDERFLOW =
+#define FE_UNDERFLOW	(1 << 5)
+      FE_UNDERFLOW,
+    FE_OVERFLOW =
+#define FE_OVERFLOW	(1 << 6)
+      FE_OVERFLOW,
+    FE_INVALID =
+#define FE_INVALID	(1 << 7)
+      FE_INVALID
   };
 
 #define FE_ALL_EXCEPT \
@@ -44,14 +49,18 @@ enum
    appropriate macros.  */
 enum
   {
-    FE_TONEAREST = 0,
-#define FE_TONEAREST	FE_TONEAREST
-    FE_TOWARDZERO = 1 << 4,
-#define FE_TOWARDZERO	FE_TOWARDZERO
-    FE_DOWNWARD = 2 << 4,
-#define FE_DOWNWARD	FE_DOWNWARD
-    FE_UPWARD = 3 << 4
-#define FE_UPWARD	FE_UPWARD
+    FE_TONEAREST =
+#define FE_TONEAREST	0
+      FE_TONEAREST,
+    FE_TOWARDZERO =
+#define FE_TOWARDZERO	(1 << 4)
+      FE_TOWARDZERO,
+    FE_DOWNWARD =
+#define FE_DOWNWARD	(2 << 4)
+      FE_DOWNWARD,
+    FE_UPWARD =
+#define FE_UPWARD	(3 << 4)
+      FE_UPWARD
   };
 
 
diff --git a/ports/sysdeps/mips/bits/fenv.h b/ports/sysdeps/mips/bits/fenv.h
index bc87b15..4e03c97 100644
--- a/ports/sysdeps/mips/bits/fenv.h
+++ b/ports/sysdeps/mips/bits/fenv.h
@@ -24,16 +24,21 @@
    of the appropriate bits in the FPU control word.  */
 enum
   {
-    FE_INEXACT = 0x04,
-#define FE_INEXACT	FE_INEXACT
-    FE_UNDERFLOW = 0x08,
-#define FE_UNDERFLOW	FE_UNDERFLOW
-    FE_OVERFLOW = 0x10,
-#define FE_OVERFLOW	FE_OVERFLOW
-    FE_DIVBYZERO = 0x20,
-#define FE_DIVBYZERO	FE_DIVBYZERO
-    FE_INVALID = 0x40,
-#define FE_INVALID	FE_INVALID
+    FE_INEXACT =
+#define FE_INEXACT	0x04
+      FE_INEXACT,
+    FE_UNDERFLOW =
+#define FE_UNDERFLOW	0x08
+      FE_UNDERFLOW,
+    FE_OVERFLOW =
+#define FE_OVERFLOW	0x10
+      FE_OVERFLOW,
+    FE_DIVBYZERO =
+#define FE_DIVBYZERO	0x20
+      FE_DIVBYZERO,
+    FE_INVALID =
+#define FE_INVALID	0x40
+      FE_INVALID,
   };
 
 #define FE_ALL_EXCEPT \
@@ -44,14 +49,18 @@ enum
    for the appropriate macros.  */
 enum
   {
-    FE_TONEAREST = 0x0,
-#define FE_TONEAREST	FE_TONEAREST
-    FE_TOWARDZERO = 0x1,
-#define FE_TOWARDZERO	FE_TOWARDZERO
-    FE_UPWARD = 0x2,
-#define FE_UPWARD	FE_UPWARD
-    FE_DOWNWARD = 0x3
-#define FE_DOWNWARD	FE_DOWNWARD
+    FE_TONEAREST =
+#define FE_TONEAREST	0x0
+      FE_TONEAREST,
+    FE_TOWARDZERO =
+#define FE_TOWARDZERO	0x1
+      FE_TOWARDZERO,
+    FE_UPWARD =
+#define FE_UPWARD	0x2
+      FE_UPWARD,
+    FE_DOWNWARD =
+#define FE_DOWNWARD	0x3
+      FE_DOWNWARD
   };
 
 
diff --git a/ports/sysdeps/tile/bits/fenv.h b/ports/sysdeps/tile/bits/fenv.h
index 7638e8c..6b04535 100644
--- a/ports/sysdeps/tile/bits/fenv.h
+++ b/ports/sysdeps/tile/bits/fenv.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2011 Free Software Foundation, Inc.
+/* Copyright (C) 2011-2012 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Chris Metcalf <cmetcalf@tilera.com>, 2011.
 
@@ -30,8 +30,9 @@ enum
   {
     __FE_UNDEFINED = 0,
 
-    FE_TONEAREST = 1,
-#define FE_TONEAREST	FE_TONEAREST
+    FE_TONEAREST =
+#define FE_TONEAREST	1
+      FE_TONEAREST,
   };
 
 /* Type representing exception flags (if there were any).  */
diff --git a/sysdeps/powerpc/bits/fenv.h b/sysdeps/powerpc/bits/fenv.h
index 1ee7e3b..845c689 100644
--- a/sysdeps/powerpc/bits/fenv.h
+++ b/sysdeps/powerpc/bits/fenv.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997, 1998, 1999, 2008 Free Software Foundation, Inc.
+/* Copyright (C) 1997-2012 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -24,14 +24,18 @@
    the appropriate bits in the FPSCR...  */
 enum
   {
-    FE_INEXACT = 1 << (31 - 6),
-#define FE_INEXACT	FE_INEXACT
-    FE_DIVBYZERO = 1 << (31 - 5),
-#define FE_DIVBYZERO	FE_DIVBYZERO
-    FE_UNDERFLOW = 1 << (31 - 4),
-#define FE_UNDERFLOW	FE_UNDERFLOW
-    FE_OVERFLOW = 1 << (31 - 3),
-#define FE_OVERFLOW	FE_OVERFLOW
+    FE_INEXACT =
+#define FE_INEXACT	(1 << (31 - 6))
+      FE_INEXACT,
+    FE_DIVBYZERO =
+#define FE_DIVBYZERO	(1 << (31 - 5))
+      FE_DIVBYZERO,
+    FE_UNDERFLOW =
+#define FE_UNDERFLOW	(1 << (31 - 4))
+      FE_UNDERFLOW,
+    FE_OVERFLOW =
+#define FE_OVERFLOW	(1 << (31 - 3))
+      FE_OVERFLOW,
 
     /* ... except for FE_INVALID, for which we use bit 31. FE_INVALID
        actually corresponds to bits 7 through 12 and 21 through 23
@@ -39,8 +43,9 @@ enum
        says that it must be a power of 2.  Instead we use bit 2 which
        is the summary bit for all the FE_INVALID exceptions, which
        kind of makes sense.  */
-    FE_INVALID = 1 << (31 - 2),
-#define FE_INVALID	FE_INVALID
+    FE_INVALID =
+#define FE_INVALID	(1 << (31 - 2))
+      FE_INVALID,
 
 #ifdef __USE_GNU
     /* Breakdown of the FE_INVALID bits. Setting FE_INVALID on an
@@ -50,43 +55,52 @@ enum
        enable these exceptions individually.  */
 
     /* Operation with SNaN. */
-    FE_INVALID_SNAN = 1 << (31 - 7),
-# define FE_INVALID_SNAN	FE_INVALID_SNAN
+    FE_INVALID_SNAN =
+# define FE_INVALID_SNAN	(1 << (31 - 7))
+      FE_INVALID_SNAN,
 
     /* Inf - Inf */
-    FE_INVALID_ISI = 1 << (31 - 8),
-# define FE_INVALID_ISI		FE_INVALID_ISI
+    FE_INVALID_ISI =
+# define FE_INVALID_ISI	(1 << (31 - 8))
+      FE_INVALID_ISI,
 
     /* Inf / Inf */
-    FE_INVALID_IDI = 1 << (31 - 9),
-# define FE_INVALID_IDI		FE_INVALID_IDI
+    FE_INVALID_IDI =
+# define FE_INVALID_IDI	(1 << (31 - 9))
+      FE_INVALID_IDI,
 
     /* 0 / 0 */
-    FE_INVALID_ZDZ = 1 << (31 - 10),
-# define FE_INVALID_ZDZ		FE_INVALID_ZDZ
+    FE_INVALID_ZDZ =
+# define FE_INVALID_ZDZ	(1 << (31 - 10))
+      FE_INVALID_ZDZ,
 
     /* Inf * 0 */
-    FE_INVALID_IMZ = 1 << (31 - 11),
-# define FE_INVALID_IMZ		FE_INVALID_IMZ
+    FE_INVALID_IMZ =
+# define FE_INVALID_IMZ	(1 << (31 - 11))
+      FE_INVALID_IMZ,
 
     /* Comparison with NaN or SNaN.  */
-    FE_INVALID_COMPARE = 1 << (31 - 12),
-# define FE_INVALID_COMPARE	FE_INVALID_COMPARE
+    FE_INVALID_COMPARE =
+# define FE_INVALID_COMPARE	(1 << (31 - 12))
+      FE_INVALID_COMPARE,
 
     /* Invalid operation flag for software (not set by hardware).  */
     /* Note that some chips don't have this implemented, presumably
        because no-one expected anyone to write software for them %-).  */
-    FE_INVALID_SOFTWARE = 1 << (31 - 21),
-# define FE_INVALID_SOFTWARE	FE_INVALID_SOFTWARE
+    FE_INVALID_SOFTWARE =
+# define FE_INVALID_SOFTWARE	(1 << (31 - 21))
+      FE_INVALID_SOFTWARE,
 
     /* Square root of negative number (including -Inf).  */
     /* Note that some chips don't have this implemented.  */
-    FE_INVALID_SQRT = 1 << (31 - 22),
-# define FE_INVALID_SQRT	FE_INVALID_SQRT
+    FE_INVALID_SQRT =
+# define FE_INVALID_SQRT	(1 << (31 - 22))
+      FE_INVALID_SQRT,
 
     /* Conversion-to-integer of a NaN or a number too large or too small.  */
-    FE_INVALID_INTEGER_CONVERSION = 1 << (31 - 23)
-# define FE_INVALID_INTEGER_CONVERSION	FE_INVALID_INTEGER_CONVERSION
+    FE_INVALID_INTEGER_CONVERSION =
+# define FE_INVALID_INTEGER_CONVERSION	(1 << (31 - 23))
+      FE_INVALID_INTEGER_CONVERSION
 
 # define FE_ALL_INVALID \
         (FE_INVALID_SNAN | FE_INVALID_ISI | FE_INVALID_IDI | FE_INVALID_ZDZ \
@@ -103,14 +117,18 @@ enum
    appropriate macros.  */
 enum
   {
-    FE_TONEAREST = 0,
-#define FE_TONEAREST	FE_TONEAREST
-    FE_TOWARDZERO = 1,
-#define FE_TOWARDZERO	FE_TOWARDZERO
-    FE_UPWARD = 2,
-#define FE_UPWARD	FE_UPWARD
-    FE_DOWNWARD = 3
-#define FE_DOWNWARD	FE_DOWNWARD
+    FE_TONEAREST =
+#define FE_TONEAREST	0
+      FE_TONEAREST,
+    FE_TOWARDZERO =
+#define FE_TOWARDZERO	1
+      FE_TOWARDZERO,
+    FE_UPWARD =
+#define FE_UPWARD	2
+      FE_UPWARD,
+    FE_DOWNWARD =
+#define FE_DOWNWARD	3
+      FE_DOWNWARD
   };
 
 /* Type representing exception flags.  */
diff --git a/sysdeps/s390/fpu/bits/fenv.h b/sysdeps/s390/fpu/bits/fenv.h
index 6df7b17..f6cc351 100644
--- a/sysdeps/s390/fpu/bits/fenv.h
+++ b/sysdeps/s390/fpu/bits/fenv.h
@@ -24,16 +24,21 @@
    of the appropriate bits in the FPU control word.  */
 enum
   {
-    FE_INVALID = 0x80,
-#define FE_INVALID	FE_INVALID
-    FE_DIVBYZERO = 0x40,
-#define FE_DIVBYZERO	FE_DIVBYZERO
-    FE_OVERFLOW = 0x20,
-#define FE_OVERFLOW	FE_OVERFLOW
-    FE_UNDERFLOW = 0x10,
-#define FE_UNDERFLOW	FE_UNDERFLOW
-    FE_INEXACT = 0x08
-#define FE_INEXACT	FE_INEXACT
+    FE_INVALID =
+#define FE_INVALID	0x80
+      FE_INVALID,
+    FE_DIVBYZERO =
+#define FE_DIVBYZERO	0x40
+      FE_DIVBYZERO,
+    FE_OVERFLOW =
+#define FE_OVERFLOW	0x20
+      FE_OVERFLOW,
+    FE_UNDERFLOW =
+#define FE_UNDERFLOW	0x10
+      FE_UNDERFLOW,
+    FE_INEXACT =
+#define FE_INEXACT	0x08
+      FE_INEXACT
   };
 /* We dont use the y bit of the DXC in the floating point control register
    as glibc has no FE encoding for fe inexact incremented
@@ -48,14 +53,18 @@ enum
 
 enum
   {
-    FE_TONEAREST = 0,
-#define FE_TONEAREST	FE_TONEAREST
-    FE_DOWNWARD = 0x3,
-#define FE_DOWNWARD	FE_DOWNWARD
-    FE_UPWARD = 0x2,
-#define FE_UPWARD	FE_UPWARD
-    FE_TOWARDZERO = 0x1
-#define FE_TOWARDZERO	FE_TOWARDZERO
+    FE_TONEAREST =
+#define FE_TONEAREST	0
+      FE_TONEAREST,
+    FE_DOWNWARD =
+#define FE_DOWNWARD	0x3
+      FE_DOWNWARD,
+    FE_UPWARD =
+#define FE_UPWARD	0x2
+      FE_UPWARD,
+    FE_TOWARDZERO =
+#define FE_TOWARDZERO	0x1
+      FE_TOWARDZERO
   };
 
 
diff --git a/sysdeps/sh/sh4/fpu/bits/fenv.h b/sysdeps/sh/sh4/fpu/bits/fenv.h
index 9315949..e51a057 100644
--- a/sysdeps/sh/sh4/fpu/bits/fenv.h
+++ b/sysdeps/sh/sh4/fpu/bits/fenv.h
@@ -24,16 +24,21 @@
    of the appropriate bits in the FPU control word.  */
 enum
   {
-    FE_INEXACT = 0x04,
-#define FE_INEXACT	FE_INEXACT
-    FE_UNDERFLOW = 0x08,
-#define FE_UNDERFLOW	FE_UNDERFLOW
-    FE_OVERFLOW = 0x10,
-#define FE_OVERFLOW	FE_OVERFLOW
-    FE_DIVBYZERO = 0x20,
-#define FE_DIVBYZERO	FE_DIVBYZERO
-    FE_INVALID = 0x40,
-#define FE_INVALID	FE_INVALID
+    FE_INEXACT =
+#define FE_INEXACT	0x04
+      FE_INEXACT,
+    FE_UNDERFLOW =
+#define FE_UNDERFLOW	0x08
+      FE_UNDERFLOW,
+    FE_OVERFLOW =
+#define FE_OVERFLOW	0x10
+      FE_OVERFLOW,
+    FE_DIVBYZERO =
+#define FE_DIVBYZERO	0x20
+      FE_DIVBYZERO,
+    FE_INVALID =
+#define FE_INVALID	0x40
+      FE_INVALID,
   };
 
 #define FE_ALL_EXCEPT \
@@ -46,10 +51,12 @@ enum
   {
     __FE_UNDEFINED = -1,
 
-    FE_TONEAREST = 0x0,
-#define FE_TONEAREST	FE_TONEAREST
-    FE_TOWARDZERO = 0x1,
-#define FE_TOWARDZERO	FE_TOWARDZERO
+    FE_TONEAREST =
+#define FE_TONEAREST	0x0
+      FE_TONEAREST,
+    FE_TOWARDZERO =
+#define FE_TOWARDZERO	0x1
+      FE_TOWARDZERO,
   };
 
 
diff --git a/sysdeps/sparc/fpu/bits/fenv.h b/sysdeps/sparc/fpu/bits/fenv.h
index 0e2a9b9..afe66ce 100644
--- a/sysdeps/sparc/fpu/bits/fenv.h
+++ b/sysdeps/sparc/fpu/bits/fenv.h
@@ -26,16 +26,21 @@
    of the appropriate accrued exception bits from the FSR.  */
 enum
   {
-    FE_INVALID = 	(1 << 9),
-#define FE_INVALID	FE_INVALID
-    FE_OVERFLOW = 	(1 << 8),
-#define FE_OVERFLOW	FE_OVERFLOW
-    FE_UNDERFLOW = 	(1 << 7),
-#define FE_UNDERFLOW	FE_UNDERFLOW
-    FE_DIVBYZERO = 	(1 << 6),
-#define FE_DIVBYZERO	FE_DIVBYZERO
-    FE_INEXACT = 	(1 << 5)
-#define FE_INEXACT	FE_INEXACT
+    FE_INVALID =
+#define FE_INVALID	(1 << 9)
+      FE_INVALID,
+    FE_OVERFLOW =
+#define FE_OVERFLOW	(1 << 8)
+      FE_OVERFLOW,
+    FE_UNDERFLOW =
+#define FE_UNDERFLOW	(1 << 7)
+      FE_UNDERFLOW,
+    FE_DIVBYZERO =
+#define FE_DIVBYZERO	(1 << 6)
+      FE_DIVBYZERO,
+    FE_INEXACT =
+#define FE_INEXACT	(1 << 5)
+      FE_INEXACT
   };
 
 #define FE_ALL_EXCEPT \
@@ -46,14 +51,18 @@ enum
    for the appropriate macros.  */
 enum
   {
-    FE_TONEAREST = 	(0U << 30),
-#define FE_TONEAREST	FE_TONEAREST
-    FE_TOWARDZERO = 	(1U << 30),
-#define FE_TOWARDZERO	FE_TOWARDZERO
-    FE_UPWARD = 	(2U << 30),
-#define FE_UPWARD	FE_UPWARD
-    FE_DOWNWARD = 	(3U << 30)
-#define FE_DOWNWARD	FE_DOWNWARD
+    FE_TONEAREST =
+#define FE_TONEAREST	(0 << 30)
+      FE_TONEAREST,
+    FE_TOWARDZERO =
+#define FE_TOWARDZERO	(1 << 30)
+      FE_TOWARDZERO,
+    FE_UPWARD =
+#define FE_UPWARD	(-0x7fffffff - 1) /* (2 << 30) */
+      FE_UPWARD,
+    FE_DOWNWARD =
+#define FE_DOWNWARD	(-0x40000000) /* (3 << 30) */
+      FE_DOWNWARD
   };
 
 #define __FE_ROUND_MASK	(3U << 30)
diff --git a/sysdeps/x86/fpu/bits/fenv.h b/sysdeps/x86/fpu/bits/fenv.h
index b2c01c4..e0079cd 100644
--- a/sysdeps/x86/fpu/bits/fenv.h
+++ b/sysdeps/x86/fpu/bits/fenv.h
@@ -23,17 +23,22 @@
    of the appropriate bits in the FPU control word.  */
 enum
   {
-    FE_INVALID = 0x01,
-#define FE_INVALID	FE_INVALID
+    FE_INVALID =
+#define FE_INVALID	0x01
+      FE_INVALID,
     __FE_DENORM = 0x02,
-    FE_DIVBYZERO = 0x04,
-#define FE_DIVBYZERO	FE_DIVBYZERO
-    FE_OVERFLOW = 0x08,
-#define FE_OVERFLOW	FE_OVERFLOW
-    FE_UNDERFLOW = 0x10,
-#define FE_UNDERFLOW	FE_UNDERFLOW
-    FE_INEXACT = 0x20
-#define FE_INEXACT	FE_INEXACT
+    FE_DIVBYZERO =
+#define FE_DIVBYZERO	0x04
+      FE_DIVBYZERO,
+    FE_OVERFLOW =
+#define FE_OVERFLOW	0x08
+      FE_OVERFLOW,
+    FE_UNDERFLOW =
+#define FE_UNDERFLOW	0x10
+      FE_UNDERFLOW,
+    FE_INEXACT =
+#define FE_INEXACT	0x20
+      FE_INEXACT
   };
 
 #define FE_ALL_EXCEPT \
@@ -44,14 +49,18 @@ enum
    for the appropriate macros.  */
 enum
   {
-    FE_TONEAREST = 0,
-#define FE_TONEAREST	FE_TONEAREST
-    FE_DOWNWARD = 0x400,
-#define FE_DOWNWARD	FE_DOWNWARD
-    FE_UPWARD = 0x800,
-#define FE_UPWARD	FE_UPWARD
-    FE_TOWARDZERO = 0xc00
-#define FE_TOWARDZERO	FE_TOWARDZERO
+    FE_TONEAREST =
+#define FE_TONEAREST	0
+      FE_TONEAREST,
+    FE_DOWNWARD =
+#define FE_DOWNWARD	0x400
+      FE_DOWNWARD,
+    FE_UPWARD =
+#define FE_UPWARD	0x800
+      FE_UPWARD,
+    FE_TOWARDZERO =
+#define FE_TOWARDZERO	0xc00
+      FE_TOWARDZERO
   };
 
 

-- 
Joseph S. Myers
joseph@codesourcery.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]