]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
test: skip one test for iszero_safe() on i386 without SSE2
authorYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 18 Oct 2022 12:23:26 +0000 (21:23 +0900)
committerLuca Boccassi <luca.boccassi@gmail.com>
Tue, 18 Oct 2022 22:09:44 +0000 (00:09 +0200)
We do not provide any numerical libraries, and iszero_safe() is only
used in parsing or formatting JSON. Hence, it is not necessary for us to
request that the function provides the same result on different systems.

Fixes #25044.

src/test/test-math-util.c

index 891bbfc84a592a83d096f09c66ee016295dce49a..0162bf7dc0433be4df774e464972cae790561c9d 100644 (file)
@@ -54,7 +54,16 @@ TEST(iszero_safe) {
         assert_se( iszero_safe(DBL_MIN / -INFINITY));
         assert_se( iszero_safe(DBL_MAX / INFINITY / 2));
         assert_se( iszero_safe(DBL_MAX / -INFINITY * DBL_MAX));
+#if defined(__i386__) && !defined(__SSE2_MATH__)
+        /* On 32bit x86, -mfpmath=387 is the default and SSE2 is not used. Then, floating point values are
+         * calculated in 80bit, and truncated to the length of the used type (double in this case). Hence,
+         * DBL_MAX * 2 is temporary calculated as a normal value, and goes to zero when divided with
+         * INFINITY. See issue #25044. */
+        log_debug("i386 architecture without SSE2 is detected. "
+                  "Skipping \"assert_se(!iszero_safe(DBL_MAX * 2 / INFINITY))\".");
+#else
         assert_se(!iszero_safe(DBL_MAX * 2 / INFINITY));
+#endif
 
         /* infinity / infinity is NaN */
         assert_se(!iszero_safe(INFINITY / INFINITY));