summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorngie <ngie@FreeBSD.org>2017-02-04 17:06:51 +0000
committerngie <ngie@FreeBSD.org>2017-02-04 17:06:51 +0000
commit4f0d7e3f0b531a6cafe1e13b8af4285aff5d69be (patch)
tree7c87e675e81bd57a0cff35850232115815384321 /lib
parent9a6fa75a05051ba43b1eba7591dc06ef1e1b0e81 (diff)
downloadFreeBSD-src-4f0d7e3f0b531a6cafe1e13b8af4285aff5d69be.zip
FreeBSD-src-4f0d7e3f0b531a6cafe1e13b8af4285aff5d69be.tar.gz
MFC r303841,r312012,r312213:
r303841 (by bdrewery): Revert r298434 which should be fixed by r301287, r301394, and r301403. PR: 208703, 208963 r312012: fmaxmin_test still fails with clang 3.9.x.. bypass the test PR: 208703 r312213: Turn COMPILER_VERSION/COMPILER_TYPE make check into a compile-time check of the clang version This works around breakage on ^/stable/10 when running installworld from a ^/stable/10 host where the test wouldn't be compiled on the first go-around and would be missing when make installworld is run. PR: 208703
Diffstat (limited to 'lib')
-rw-r--r--lib/msun/tests/Makefile11
-rw-r--r--lib/msun/tests/fmaxmin_test.c21
2 files changed, 20 insertions, 12 deletions
diff --git a/lib/msun/tests/Makefile b/lib/msun/tests/Makefile
index 518c509..ad56873 100644
--- a/lib/msun/tests/Makefile
+++ b/lib/msun/tests/Makefile
@@ -52,16 +52,7 @@ TAP_TESTS_C+= ctrig_test
TAP_TESTS_C+= exponential_test
TAP_TESTS_C+= fenv_test
TAP_TESTS_C+= fma_test
-# clang 3.8.0 fails always fails this test. See: bug 208703
-#
-# XXX: depending on this compiler version check doesn't work at
-# buildworld/installworld time, which results in jenkins failures (bug 208963)
-# because the build is run on a 10.x instance, which has an older clang
-# compiler.
-#
-#.if ! (${COMPILER_TYPE} == "clang" && ${COMPILER_VERSION} == 30800)
-#TAP_TESTS_C+= fmaxmin_test
-#.endif
+TAP_TESTS_C+= fmaxmin_test
TAP_TESTS_C+= ilogb_test
TAP_TESTS_C+= invtrig_test
TAP_TESTS_C+= invctrig_test
diff --git a/lib/msun/tests/fmaxmin_test.c b/lib/msun/tests/fmaxmin_test.c
index 7ddcc87..87adb95 100644
--- a/lib/msun/tests/fmaxmin_test.c
+++ b/lib/msun/tests/fmaxmin_test.c
@@ -86,6 +86,8 @@ testall_r(long double big, long double small)
return (ok);
}
+const char *comment = NULL;
+
/*
* Test all the functions: fmaxf, fmax, fmaxl, fminf, fmin, and fminl,
* in all rounding modes and with the arguments in different orders.
@@ -107,10 +109,17 @@ testall(int testnum, long double big, long double small)
break;
}
}
- printf("%sok %d - big = %.20Lg, small = %.20Lg\n",
- (i == 4) ? "" : "not ", testnum, big, small);
+ printf("%sok %d - big = %.20Lg, small = %.20Lg%s\n",
+ (i == 4) ? "" : "not ", testnum, big, small,
+ comment == NULL ? "" : comment);
}
+/* Clang 3.8.0+ fails the invariants for testcase 6, 7, 10, and 11. */
+#if defined(__clang__) && \
+ (__clang_major__ >= 3 && __clang_minor__ >= 8 && __clang_patchlevel__ >= 0)
+#define affected_by_bug_208703
+#endif
+
int
main(int argc, char *argv[])
{
@@ -122,15 +131,23 @@ main(int argc, char *argv[])
testall(3, nextafterf(42.0, INFINITY), 42.0);
testall(4, -5.0, -5.0);
testall(5, -3.0, -4.0);
+#ifdef affected_by_bug_208703
+ comment = "# TODO: testcase 6-7 fails invariant with clang 3.8+ (bug 208703)";
+#endif
testall(6, 1.0, NAN);
testall(7, INFINITY, NAN);
+ comment = NULL;
testall(8, INFINITY, 1.0);
testall(9, -3.0, -INFINITY);
testall(10, 3.0, -INFINITY);
+#ifdef affected_by_bug_208703
+ comment = "# TODO: testcase 11-12 fails invariant with clang 3.8+ (bug 208703)";
+#endif
testall(11, NAN, NAN);
/* This test isn't strictly required to work by C99. */
testall(12, 0.0, -0.0);
+ comment = NULL;
return (0);
}
OpenPOWER on IntegriCloud