2023-11-06 Bruno Haible <bruno@clisp.org>
+ fenv-*: Avoid test failures on OpenBSD/mips64.
+ * tests/test-fenv-round.c (test_towardzero, test_upward, test_downward):
+ Skip the 'long double' tests on OpenBSD/mips64.
+ * tests/test-fenv-except-tracking-2.c (main): On OpenBSD/mips64, skip
+ the 'long double' test.
+ * tests/test-fenv-except-trapping-2.c (main): Skip the '4' tests and the
+ 'long double' tests also on OpenBSD/mips64.
+ * doc/posix-functions/fesetround.texi: Mention OpenBSD/mips64 here too.
+
fenv-exceptions-tracking-c99: Fix test failures on OpenBSD/mips64.
* m4/fenv-exceptions-tracking.m4 (gl_FENV_EXCEPTIONS_TRACKING): On
OpenBSD/mips, set REPLACE_FECLEAREXCEPT to 1.
@itemize
@item
The rounding mode has no effect on @code{long double} operations on some platforms:
-FreeBSD/arm64, NetBSD/sparc64.
+FreeBSD/arm64, NetBSD/sparc64, OpenBSD/mips64.
@end itemize
/* This test does not work on Linux/loongarch64 with glibc 2.37.
Likewise on Linux/alpha with glibc 2.7 on Linux 2.6.26.
Likewise on FreeBSD 12.2/sparc and NetBSD 8.0/sparc.
+ Likewise on OpenBSD 7.4/mips64.
Cause unknown. */
#if !((__GLIBC__ >= 2 && defined __loongarch__) \
|| ((__GLIBC__ == 2 && __GLIBC_MINOR__ < 36) && defined __alpha) \
- || ((defined __FreeBSD__ || defined __NetBSD__) && defined __sparc))
+ || ((defined __FreeBSD__ || defined __NetBSD__) && defined __sparc) \
+ || (defined __OpenBSD__ && defined __mips64))
{
volatile long double a, b;
_GL_UNUSED volatile long double c;
macOS/i386, macOS/x86_64, macOS/arm64,
FreeBSD/i386, FreeBSD/x86_64,
NetBSD/i386, NetBSD/x86_64,
- OpenBSD/i386, OpenBSD/x86_64,
+ OpenBSD/i386, OpenBSD/x86_64, OpenBSD/mips64,
Minix/i386,
AIX/powerpc,
Solaris/i386, Solaris/x86_64,
|| (defined MUSL_LIBC && ((defined __i386 || defined _M_IX86) || defined __powerpc__)) \
|| ((defined __APPLE__ && defined __MACH__) && ((defined __x86_64__ || defined _M_X64) || (defined __i386 || defined _M_IX86) || defined __aarch64__)) \
|| ((defined __FreeBSD__ || defined __NetBSD__ || defined __OpenBSD__) && ((defined __x86_64__ || defined _M_X64) || (defined __i386 || defined _M_IX86))) \
+ || (defined __OpenBSD__ && defined __mips64) \
|| (defined __minix && (defined __i386 || defined _M_IX86)) \
|| (defined _AIX && defined __powerpc__) \
|| (defined __sun && ((defined __x86_64__ || defined _M_X64) || (defined __i386 || defined _M_IX86))) \
/* The 'l' tests do not work on Linux/loongarch64 with glibc 2.37.
Likewise on Linux/alpha with glibc 2.7 on Linux 2.6.26.
Likewise on FreeBSD 12.2/sparc and NetBSD 8.0/sparc.
+ Likewise on OpenBSD 7.4/mips64.
Cause unknown. */
#if (__GLIBC__ >= 2 && defined __loongarch__) \
|| ((__GLIBC__ == 2 && __GLIBC_MINOR__ < 36) && defined __alpha) \
- || ((defined __FreeBSD__ || defined __NetBSD__) && defined __sparc)
+ || ((defined __FreeBSD__ || defined __NetBSD__) && defined __sparc) \
+ || (defined __OpenBSD__ && defined __mips64)
known_failure |= (type_arg[0] == 'l');
#endif
if (known_failure)
a = -1; b = 3; q = a / b; p = b * q;
ASSERT (p > a);
}
-#if !((defined __FreeBSD__ && defined __aarch64__) || (defined __NetBSD__ && defined __sparcv9 /* sparc64 */))
+#if !((defined __FreeBSD__ && defined __aarch64__) || (defined __NetBSD__ && defined __sparcv9 /* sparc64 */) || (defined __OpenBSD__ && defined __mips64))
{
long double volatile a, b, q, p;
a = -1; b = 3; q = a / b; p = b * q;
ASSERT (p > a);
}
-#if !((defined __FreeBSD__ && defined __aarch64__) || (defined __NetBSD__ && defined __sparcv9 /* sparc64 */))
+#if !((defined __FreeBSD__ && defined __aarch64__) || (defined __NetBSD__ && defined __sparcv9 /* sparc64 */) || (defined __OpenBSD__ && defined __mips64))
{
long double volatile a, b, q, p;
a = -1; b = 3; q = a / b; p = b * q;
ASSERT (p < a);
}
-#if !((defined __FreeBSD__ && defined __aarch64__) || (defined __NetBSD__ && defined __sparcv9 /* sparc64 */))
+#if !((defined __FreeBSD__ && defined __aarch64__) || (defined __NetBSD__ && defined __sparcv9 /* sparc64 */) || (defined __OpenBSD__ && defined __mips64))
{
long double volatile a, b, q, p;