This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Hi! On Thu, 7 Mar 2013 21:08:09 +0000, "Joseph S. Myers" <joseph@codesourcery.com> wrote: > On Thu, 7 Mar 2013, Thomas Schwinge wrote: > > > Now, I have no idea if this version of GCC that I'm using for testing is > > actually meant to follow that specification, but not matter what, this is > > still unusable for our glibc purposes. > > glibc tests are not about how negation works for sNaN. You should have a > variable storing a negative sNaN (statically initialized to such) and use > that to test negative sNaN arguments to functions. Like this? * math/test-snan.c (TEST_FUNC): Add and use minus_sNaN_var variable. diff --git math/test-snan.c math/test-snan.c index 6ec9414..83657ee 100644 --- math/test-snan.c +++ math/test-snan.c @@ -94,6 +94,7 @@ NAME (void) \ /* A sNaN is only guaranteed to be representable in variables with */ \ /* static (or thread-local) storage duration. */ \ static volatile FLOAT sNaN_var = __builtin_nans ## SUFFIX (""); \ + static volatile FLOAT minus_sNaN_var = -__builtin_nans ## SUFFIX (""); \ fenv_t saved_fenv; \ \ zero_var = 0.0; \ @@ -105,6 +106,7 @@ NAME (void) \ (void) &one_var; \ (void) &qNaN_var; \ (void) &sNaN_var; \ + (void) &minus_sNaN_var; \ (void) &Inf_var; \ \ set_sigaction_FP (); \ @@ -147,7 +149,7 @@ NAME (void) \ printf (#FLOAT " isnan (-sNaN) raised SIGFPE\n"); \ errors++; \ } else { \ - check (#FLOAT " isnan (-sNaN)", isnan (-sNaN_var)); \ + check (#FLOAT " isnan (-sNaN)", isnan (minus_sNaN_var)); \ } \ \ feclearexcept(FE_ALL_EXCEPT); \ @@ -187,7 +189,7 @@ NAME (void) \ printf (#FLOAT " isinf (-sNaN) raised SIGFPE\n"); \ errors++; \ } else { \ - check (#FLOAT " isinf (-sNaN)", !isinf (-sNaN_var)); \ + check (#FLOAT " isinf (-sNaN)", !isinf (minus_sNaN_var)); \ } \ \ feclearexcept(FE_ALL_EXCEPT); \ @@ -227,7 +229,7 @@ NAME (void) \ printf (#FLOAT " isfinite (-sNaN) raised SIGFPE\n"); \ errors++; \ } else { \ - check (#FLOAT " isfinite (-sNaN)", !isfinite (-sNaN_var)); \ + check (#FLOAT " isfinite (-sNaN)", !isfinite (minus_sNaN_var)); \ } \ \ feclearexcept(FE_ALL_EXCEPT); \ @@ -267,7 +269,7 @@ NAME (void) \ printf (#FLOAT " isnormal (-sNaN) raised SIGFPE\n"); \ errors++; \ } else { \ - check (#FLOAT " isnormal (-sNaN)", !isnormal (-sNaN_var)); \ + check (#FLOAT " isnormal (-sNaN)", !isnormal (minus_sNaN_var)); \ } \ \ feclearexcept(FE_ALL_EXCEPT); \ @@ -297,7 +299,7 @@ NAME (void) \ printf (#FLOAT " fpclassify (sNaN) isnormal SIGFPE\n"); \ errors++; \ } else { \ - check (#FLOAT " fpclassify (sNaN)", (fpclassify (sNaN_var)==FP_NAN)); \ + check (#FLOAT " fpclassify (sNaN)", fpclassify (sNaN_var) == FP_NAN); \ } \ \ feclearexcept(FE_ALL_EXCEPT); \ @@ -307,7 +309,8 @@ NAME (void) \ printf (#FLOAT " fpclassify (-sNaN) raised SIGFPE\n"); \ errors++; \ } else { \ - check (#FLOAT " fpclassify (-sNaN)", (fpclassify (-sNaN_var)==FP_NAN)); \ + check (#FLOAT " fpclassify (-sNaN)", \ + fpclassify (minus_sNaN_var) == FP_NAN); \ } \ \ fesetenv(&saved_fenv); /* restore saved fenv */ \ GrÃÃe, Thomas
Attachment:
pgp00000.pgp
Description: PGP signature
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |