aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog18
-rw-r--r--sysdeps/generic/math_private.h10
-rw-r--r--sysdeps/m68k/coldfire/nofpu/math_private.h8
-rw-r--r--sysdeps/microblaze/math_private.h8
-rw-r--r--sysdeps/nios2/math_private.h8
-rw-r--r--sysdeps/tile/math_private.h4
6 files changed, 31 insertions, 25 deletions
diff --git a/ChangeLog b/ChangeLog
index e1262c65f1..4a574f52c3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,23 @@
2018-02-01 Joseph Myers <joseph@codesourcery.com>
+ * sysdeps/generic/math_private.h [FE_ALL_EXCEPT == 0]
+ (feraiseexcept): New macro.
+ [FE_ALL_EXCEPT == 0] (__feraiseexcept): Likewise.
+ * sysdeps/m68k/coldfire/nofpu/math_private.h (feraiseexcept):
+ Remove macro.
+ (__feraiseexcept): Likewise.
+ (feclearexcept): Likewise.
+ * sysdeps/microblaze/math_private.h (feraiseexcept): Likewise.
+ (__feraiseexcept): Likewise.
+ (feclearexcept): Likewise.
+ * sysdeps/nios2/math_private.h (feraiseexcept): Likewise.
+ (__feraiseexcept): Likewise.
+ (feclearexcept): Likewise.
+ * sysdeps/tile/math_private.h (feraiseexcept): Likewise.
+ (__feraiseexcept): Likewise.
+ (feclearexcept): Likewise.
+ (fetestexcept): Likewise.
+
* sysdeps/m68k/coldfire/math-tests.h: New file.
* sysdeps/m68k/fpu/bits/fenv.h: Move to ....
diff --git a/sysdeps/generic/math_private.h b/sysdeps/generic/math_private.h
index e4b9d8697f..acfbd9b6cc 100644
--- a/sysdeps/generic/math_private.h
+++ b/sysdeps/generic/math_private.h
@@ -644,4 +644,14 @@ libc_feresetround_noex_ctx (struct rm_ctx *ctx)
SET_RESTORE_ROUND_GENERIC (RM, libc_feholdsetround_53bit, \
libc_feresetround_53bit)
+/* When no floating-point exceptions are defined in <fenv.h>, make
+ feraiseexcept ignore its argument so that unconditional
+ feraiseexcept calls do not cause errors for undefined exceptions.
+ Define it to expand to a void expression so that any calls testing
+ the result of feraiseexcept do produce errors. */
+#if FE_ALL_EXCEPT == 0
+# define feraiseexcept(excepts) ((void) 0)
+# define __feraiseexcept(excepts) ((void) 0)
+#endif
+
#endif /* _MATH_PRIVATE_H_ */
diff --git a/sysdeps/m68k/coldfire/nofpu/math_private.h b/sysdeps/m68k/coldfire/nofpu/math_private.h
index 879577b551..951f026eac 100644
--- a/sysdeps/m68k/coldfire/nofpu/math_private.h
+++ b/sysdeps/m68k/coldfire/nofpu/math_private.h
@@ -30,9 +30,7 @@
success in every case.
The overrides for libc_ functions must happen before we include
- the generic math_private.h, and the overrides for regular
- <fenv.h> functions must happen afterwards, to avoid clashing with
- the declarations of those functions. */
+ the generic math_private.h. */
#define libc_fesetround(rnd) ({ 0; })
#define libc_fetestexcept(exc) ({ 0; })
@@ -45,8 +43,4 @@
#include_next <math_private.h>
-#define feraiseexcept(excepts) ({ 0; })
-#define __feraiseexcept(excepts) ({ 0; })
-#define feclearexcept(exc) ({ 0; })
-
#endif
diff --git a/sysdeps/microblaze/math_private.h b/sysdeps/microblaze/math_private.h
index d82e8bf820..1a2c521c07 100644
--- a/sysdeps/microblaze/math_private.h
+++ b/sysdeps/microblaze/math_private.h
@@ -17,9 +17,7 @@
success in every case.
The overrides for libc_ functions must happen before we include
- the generic math_private.h, and the overrides for regular
- <fenv.h> functions must happen afterwards, to avoid clashing with
- the declarations of those functions. */
+ the generic math_private.h. */
#define libc_fesetround(rnd) ({ 0; })
#define libc_fetestexcept(exc) ({ 0; })
@@ -32,8 +30,4 @@
#include_next <math_private.h>
-#define feraiseexcept(excepts) ({ 0; })
-#define __feraiseexcept(excepts) ({ 0; })
-#define feclearexcept(exc) ({ 0; })
-
#endif
diff --git a/sysdeps/nios2/math_private.h b/sysdeps/nios2/math_private.h
index 373da2a621..25140416a8 100644
--- a/sysdeps/nios2/math_private.h
+++ b/sysdeps/nios2/math_private.h
@@ -16,9 +16,7 @@
success in every case.
The overrides for libc_ functions must happen before we include
- the generic math_private.h, and the overrides for regular
- <fenv.h> functions must happen afterwards, to avoid clashing with
- the declarations of those functions. */
+ the generic math_private.h. */
#define libc_fesetround(rnd) ({ 0; })
#define libc_fetestexcept(exc) ({ 0; })
@@ -31,8 +29,4 @@
#include_next <math_private.h>
-#define feraiseexcept(excepts) ({ 0; })
-#define __feraiseexcept(excepts) ({ 0; })
-#define feclearexcept(exc) ({ 0; })
-
#endif
diff --git a/sysdeps/tile/math_private.h b/sysdeps/tile/math_private.h
index 99daec4093..6dc43f4228 100644
--- a/sysdeps/tile/math_private.h
+++ b/sysdeps/tile/math_private.h
@@ -26,10 +26,6 @@
#include_next <math_private.h>
-#define feraiseexcept(excepts) ({ 0; })
-#define __feraiseexcept(excepts) ({ 0; })
-#define feclearexcept(exc) ({ 0; })
-#define fetestexcept(exc) ({ 0; })
extern inline int fegetenv (fenv_t *__e) { return 0; }
extern inline int __fegetenv (fenv_t *__e) { return 0; }
extern inline int fesetenv (const fenv_t *__e) { return 0; }