I wrote: > The patch below fixes the failures, by introducing a specific function, rather > than unary minus, for negating the sign of NaNs.
This function should also be used for the getpayload* tests (although this has not caused a test failure, because getpayload (- x) == getpayload (x)). 2024-04-19 Bruno Haible <br...@clisp.org> getpayload* tests: Don't assume that '-' works as expected on NaN. * tests/test-getpayload.c: Include signed-nan.h. (main): Use minus_NaNd. * tests/test-getpayloadf.c: Include signed-nan.h. (main): Use minus_NaNf. * tests/test-getpayloadl.c: Include signed-nan.h. (main): Use minus_NaNl. * modules/getpayload-tests (Depends-on): Add signed-nan. * modules/getpayloadf-tests (Depends-on): Likewise. * modules/getpayloadl-tests (Depends-on): Likewise. diff --git a/modules/getpayload-tests b/modules/getpayload-tests index d56192d63b..dcc27371fb 100644 --- a/modules/getpayload-tests +++ b/modules/getpayload-tests @@ -8,6 +8,7 @@ tests/macros.h Depends-on: setpayload setpayloadsig +signed-nan signed-snan configure.ac: diff --git a/modules/getpayloadf-tests b/modules/getpayloadf-tests index 1901fc43f9..f1b0217600 100644 --- a/modules/getpayloadf-tests +++ b/modules/getpayloadf-tests @@ -8,6 +8,7 @@ tests/macros.h Depends-on: setpayloadf setpayloadsigf +signed-nan signed-snan configure.ac: diff --git a/modules/getpayloadl-tests b/modules/getpayloadl-tests index 02433a206d..fc508e797b 100644 --- a/modules/getpayloadl-tests +++ b/modules/getpayloadl-tests @@ -8,6 +8,7 @@ tests/macros.h Depends-on: setpayloadl setpayloadsigl +signed-nan signed-snan configure.ac: diff --git a/tests/test-getpayload.c b/tests/test-getpayload.c index a6d9d940bd..54d4e77612 100644 --- a/tests/test-getpayload.c +++ b/tests/test-getpayload.c @@ -24,6 +24,7 @@ SIGNATURE_CHECK (getpayload, double, (const double *)); #include "minus-zero.h" #include "infinity.h" +#include "signed-nan.h" #include "signed-snan.h" #include "macros.h" @@ -72,7 +73,7 @@ main () ret = getpayload (&arg); ASSERT (ret == p); /* Test quiet NaNs with sign bit == 1. */ - arg = - arg; + arg = minus_NaNd (arg); ret = getpayload (&arg); ASSERT (ret == p); } diff --git a/tests/test-getpayloadf.c b/tests/test-getpayloadf.c index f0ec047235..48832763e3 100644 --- a/tests/test-getpayloadf.c +++ b/tests/test-getpayloadf.c @@ -24,6 +24,7 @@ SIGNATURE_CHECK (getpayloadf, float, (const float *)); #include "minus-zero.h" #include "infinity.h" +#include "signed-nan.h" #include "signed-snan.h" #include "macros.h" @@ -72,7 +73,7 @@ main () ret = getpayloadf (&arg); ASSERT (ret == p); /* Test quiet NaNs with sign bit == 1. */ - arg = - arg; + arg = minus_NaNf (arg); ret = getpayloadf (&arg); ASSERT (ret == p); } diff --git a/tests/test-getpayloadl.c b/tests/test-getpayloadl.c index 4aaa7c5c0c..12ff6dea8f 100644 --- a/tests/test-getpayloadl.c +++ b/tests/test-getpayloadl.c @@ -24,6 +24,7 @@ SIGNATURE_CHECK (getpayloadl, long double, (const long double *)); #include "minus-zero.h" #include "infinity.h" +#include "signed-nan.h" #include "signed-snan.h" #include "macros.h" @@ -79,7 +80,7 @@ main () ret = getpayloadl (&arg); ASSERT (ret == p); /* Test quiet NaNs with sign bit == 1. */ - arg = - arg; + arg = minus_NaNl (arg); ret = getpayloadl (&arg); ASSERT (ret == p); }