1
1
mirror of https://github.com/systemd/systemd-stable.git synced 2025-01-12 09:17:44 +03:00

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.
This commit is contained in:
Yu Watanabe 2022-10-18 21:23:26 +09:00 committed by Luca Boccassi
parent 50675bb98f
commit 82c5487894

View 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));