Make fenv.h FE_* macros usable in #if (bug 3439)
Joseph S. Myers
joseph@codesourcery.com
Sat Nov 3 02:02:00 GMT 2012
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
More information about the Libc-alpha
mailing list