From: Yu Watanabe Date: Tue, 18 Oct 2022 12:23:26 +0000 (+0900) Subject: test: skip one test for iszero_safe() on i386 without SSE2 X-Git-Tag: v252-rc3~32 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=82c5487894c1610ba9021966603d1b35b2ff2e14;p=thirdparty%2Fsystemd.git test: skip one test for iszero_safe() on i386 without SSE2 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. --- diff --git a/src/test/test-math-util.c b/src/test/test-math-util.c index 891bbfc84a5..0162bf7dc04 100644 --- a/src/test/test-math-util.c +++ b/src/test/test-math-util.c @@ -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));