about summary refs log tree commit diff
path: root/math
diff options
context:
space:
mode:
Diffstat (limited to 'math')
-rw-r--r--math/Makefile1
-rw-r--r--math/test-fenv.c18
2 files changed, 18 insertions, 1 deletions
diff --git a/math/Makefile b/math/Makefile
index 45df416a1f..2e240197a5 100644
--- a/math/Makefile
+++ b/math/Makefile
@@ -83,6 +83,7 @@ tests = test-matherr test-fenv atest-exp atest-sincos atest-exp2 basic-test \
 # We do the `long double' tests only if this data type is available and
 # distinct from `double'.
 test-longdouble-yes = test-ldouble test-ildoubl
+distribute += $(test-longdouble-yes:=.c)
 
 ifneq (no,$(PERL))
 libm-tests = test-float test-double $(test-longdouble-$(long-double-fcts)) \
diff --git a/math/test-fenv.c b/math/test-fenv.c
index d803f27808..c369fc0aaa 100644
--- a/math/test-fenv.c
+++ b/math/test-fenv.c
@@ -400,6 +400,7 @@ static void
 feexcp_mask_test (const char *flag_name, int fe_exc)
 {
   int status;
+  int exception;
   pid_t pid;
 
   printf ("Test: after fedisable (%s) processes will not abort\n", flag_name);
@@ -415,7 +416,22 @@ feexcp_mask_test (const char *flag_name, int fe_exc)
       setrlimit (RLIMIT_CORE, &core_limit);
 #endif
       feenableexcept (FE_ALL_EXCEPT);
-      fedisableexcept (fe_exc);
+      exception = fe_exc;
+#ifdef FE_INEXACT
+      /* The standard allows the inexact exception to be set together with the
+	 underflow and overflow exceptions.  So add FE_INEXACT to the set of
+	 exceptions to be disabled if we will be raising underflow or
+	 overflow.  */
+# ifdef FE_OVERFLOW
+      if (fe_exc & FE_OVERFLOW)
+	exception |= FE_INEXACT;
+# endif
+# ifdef FE_UNDERFLOW
+      if (fe_exc & FE_UNDERFLOW)
+	exception |= FE_INEXACT;
+# endif
+#endif
+      fedisableexcept (exception);
       feraiseexcept (fe_exc);
       exit (2);
     }