Module Name:    src
Committed By:   riastradh
Date:           Sun May 12 21:53:26 UTC 2024

Modified Files:
        src/tests/lib/libm: t_fenv.c

Log Message:
tests/lib/libm/t_fenv: Work around PR 58253.


To generate a diff of this commit:
cvs rdiff -u -r1.16 -r1.17 src/tests/lib/libm/t_fenv.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/tests/lib/libm/t_fenv.c
diff -u src/tests/lib/libm/t_fenv.c:1.16 src/tests/lib/libm/t_fenv.c:1.17
--- src/tests/lib/libm/t_fenv.c:1.16	Mon Mar 18 16:33:54 2024
+++ src/tests/lib/libm/t_fenv.c	Sun May 12 21:53:26 2024
@@ -1,4 +1,4 @@
-/* $NetBSD: t_fenv.c,v 1.16 2024/03/18 16:33:54 martin Exp $ */
+/* $NetBSD: t_fenv.c,v 1.17 2024/05/12 21:53:26 riastradh Exp $ */
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -29,7 +29,7 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 #include <sys/cdefs.h>
-__RCSID("$NetBSD: t_fenv.c,v 1.16 2024/03/18 16:33:54 martin Exp $");
+__RCSID("$NetBSD: t_fenv.c,v 1.17 2024/05/12 21:53:26 riastradh Exp $");
 
 #include <atf-c.h>
 
@@ -341,6 +341,17 @@ ATF_TC_BODY(feenableexcept, tc)
 	    (int)fpgetmask(), (int)FP_X_INV);
 }
 
+/*
+ * Temporary workaround for PR 58253: powerpc has more fenv exception
+ * bits than it can handle.
+ */
+#if defined __powerpc__
+#define	FE_TRAP_EXCEPT							      \
+	(FE_DIVBYZERO|FE_INEXACT|FE_INVALID|FE_OVERFLOW|FE_UNDERFLOW)
+#else
+#define	FE_TRAP_EXCEPT	FE_ALL_EXCEPT
+#endif
+
 ATF_TC(fetestexcept_trap);
 ATF_TC_HEAD(fetestexcept_trap, tc)
 {
@@ -353,21 +364,21 @@ ATF_TC_BODY(fetestexcept_trap, tc)
 
 	FPU_EXC_PREREQ();
 
-	fedisableexcept(FE_ALL_EXCEPT);
+	fedisableexcept(FE_TRAP_EXCEPT);
 	ATF_CHECK_EQ_MSG((except = fegetexcept()), 0,
 	    "fegetexcept()=0x%x", except);
 
-	(void)fetestexcept(FE_ALL_EXCEPT);
+	(void)fetestexcept(FE_TRAP_EXCEPT);
 	ATF_CHECK_EQ_MSG((except = fegetexcept()), 0,
 	    "fegetexcept()=0x%x", except);
 
-	feenableexcept(FE_ALL_EXCEPT);
-	ATF_CHECK_EQ_MSG((except = fegetexcept()), FE_ALL_EXCEPT,
-	    "fegetexcept()=0x%x FE_ALL_EXCEPT=0x%x", except, FE_ALL_EXCEPT);
-
-	(void)fetestexcept(FE_ALL_EXCEPT);
-	ATF_CHECK_EQ_MSG((except = fegetexcept()), FE_ALL_EXCEPT,
-	    "fegetexcept()=0x%x FE_ALL_EXCEPT=0x%x", except, FE_ALL_EXCEPT);
+	feenableexcept(FE_TRAP_EXCEPT);
+	ATF_CHECK_EQ_MSG((except = fegetexcept()), FE_TRAP_EXCEPT,
+	    "fegetexcept()=0x%x FE_TRAP_EXCEPT=0x%x", except, FE_TRAP_EXCEPT);
+
+	(void)fetestexcept(FE_TRAP_EXCEPT);
+	ATF_CHECK_EQ_MSG((except = fegetexcept()), FE_TRAP_EXCEPT,
+	    "fegetexcept()=0x%x FE_ALL_EXCEPT=0x%x", except, FE_TRAP_EXCEPT);
 }
 
 ATF_TP_ADD_TCS(tp)

Reply via email to