svn commit: r367811 - head/lib/msun/tests
Alfredo Dal'Ava Junior
alfredo at FreeBSD.org
Wed Nov 18 19:23:31 UTC 2020
Author: alfredo
Date: Wed Nov 18 19:23:30 2020
New Revision: 367811
URL: https://svnweb.freebsd.org/changeset/base/367811
Log:
msun tests: use standard floating-point exception flags on lrint and fenv tests
Some platforms have additional architecture-specific floating-point flags.
Msun test cases lrint and test_fegsetenv (fenv) expects only standard flags,
so make sure to mask them appropriately.
This makes test pass on PowerPC64.
Reviewed by: jhibbits, ngie
Sponsored by: Eldorado Research Institute (eldorado.org.br)
Differential Revision: https://reviews.freebsd.org/D27202
Modified:
head/lib/msun/tests/fenv_test.c
head/lib/msun/tests/lrint_test.c
Modified: head/lib/msun/tests/fenv_test.c
==============================================================================
--- head/lib/msun/tests/fenv_test.c Wed Nov 18 19:22:24 2020 (r367810)
+++ head/lib/msun/tests/fenv_test.c Wed Nov 18 19:23:30 2020 (r367811)
@@ -43,13 +43,7 @@ __FBSDID("$FreeBSD$");
#include <string.h>
#include <unistd.h>
-/*
- * Implementations are permitted to define additional exception flags
- * not specified in the standard, so it is not necessarily true that
- * FE_ALL_EXCEPT == ALL_STD_EXCEPT.
- */
-#define ALL_STD_EXCEPT (FE_DIVBYZERO | FE_INEXACT | FE_INVALID | \
- FE_OVERFLOW | FE_UNDERFLOW)
+#include "test-utils.h"
#define NEXCEPTS (sizeof(std_excepts) / sizeof(std_excepts[0]))
@@ -373,7 +367,13 @@ test_fegsetenv(void)
assert(fegetround() == FE_TONEAREST);
assert(fesetenv(&env2) == 0);
- assert(fetestexcept(FE_ALL_EXCEPT) == excepts);
+
+ /*
+ * Some platforms like powerpc may set extra exception bits. Since
+ * only standard exceptions are tested, mask against ALL_STD_EXCEPT
+ */
+ assert((fetestexcept(FE_ALL_EXCEPT) & ALL_STD_EXCEPT) == excepts);
+
assert(fegetround() == FE_DOWNWARD);
assert(fesetenv(&env1) == 0);
assert(fetestexcept(FE_ALL_EXCEPT) == 0);
Modified: head/lib/msun/tests/lrint_test.c
==============================================================================
--- head/lib/msun/tests/lrint_test.c Wed Nov 18 19:22:24 2020 (r367810)
+++ head/lib/msun/tests/lrint_test.c Wed Nov 18 19:23:30 2020 (r367811)
@@ -41,6 +41,8 @@ __FBSDID("$FreeBSD$");
#include <ieeefp.h>
#endif
+#include "test-utils.h"
+
/*
* XXX The volatile here is to avoid gcc's bogus constant folding and work
* around the lack of support for the FENV_ACCESS pragma.
@@ -49,7 +51,8 @@ __FBSDID("$FreeBSD$");
volatile double _d = x; \
assert(feclearexcept(FE_ALL_EXCEPT) == 0); \
assert((func)(_d) == (result) || fetestexcept(FE_INVALID)); \
- assert(fetestexcept(FE_ALL_EXCEPT) == (excepts)); \
+ assert((fetestexcept(FE_ALL_EXCEPT) & ALL_STD_EXCEPT) \
+ == (excepts)); \
} while (0)
#define testall(x, result, excepts) do { \
More information about the svn-src-all
mailing list