Author: alfredo
Date: Wed Nov 18 19:23:30 2020
New Revision: 367811
URL: https://svnweb.freebsd.org/changeset/base/367811

Log:
  msun tests: use standard floating-point exception flags on lrint and fenv 
tests
  
  Some platforms have additional architecture-specific floating-point flags.
  Msun test cases lrint and test_fegsetenv (fenv) expects only standard flags,
  so make sure to mask them appropriately.
  
  This makes test pass on PowerPC64.
  
  Reviewed by:  jhibbits, ngie
  Sponsored by: Eldorado Research Institute (eldorado.org.br)
  Differential Revision:        https://reviews.freebsd.org/D27202

Modified:
  head/lib/msun/tests/fenv_test.c
  head/lib/msun/tests/lrint_test.c

Modified: head/lib/msun/tests/fenv_test.c
==============================================================================
--- head/lib/msun/tests/fenv_test.c     Wed Nov 18 19:22:24 2020        
(r367810)
+++ head/lib/msun/tests/fenv_test.c     Wed Nov 18 19:23:30 2020        
(r367811)
@@ -43,13 +43,7 @@ __FBSDID("$FreeBSD$");
 #include <string.h>
 #include <unistd.h>
 
-/*
- * Implementations are permitted to define additional exception flags
- * not specified in the standard, so it is not necessarily true that
- * FE_ALL_EXCEPT == ALL_STD_EXCEPT.
- */
-#define        ALL_STD_EXCEPT  (FE_DIVBYZERO | FE_INEXACT | FE_INVALID | \
-                        FE_OVERFLOW | FE_UNDERFLOW)
+#include "test-utils.h"
 
 #define        NEXCEPTS        (sizeof(std_excepts) / sizeof(std_excepts[0]))
 
@@ -373,7 +367,13 @@ test_fegsetenv(void)
                assert(fegetround() == FE_TONEAREST);
 
                assert(fesetenv(&env2) == 0);
-               assert(fetestexcept(FE_ALL_EXCEPT) == excepts);
+
+               /* 
+                * Some platforms like powerpc may set extra exception bits. 
Since
+                * only standard exceptions are tested, mask against 
ALL_STD_EXCEPT 
+                */
+               assert((fetestexcept(FE_ALL_EXCEPT) & ALL_STD_EXCEPT) == 
excepts);
+
                assert(fegetround() == FE_DOWNWARD);
                assert(fesetenv(&env1) == 0);
                assert(fetestexcept(FE_ALL_EXCEPT) == 0);

Modified: head/lib/msun/tests/lrint_test.c
==============================================================================
--- head/lib/msun/tests/lrint_test.c    Wed Nov 18 19:22:24 2020        
(r367810)
+++ head/lib/msun/tests/lrint_test.c    Wed Nov 18 19:23:30 2020        
(r367811)
@@ -41,6 +41,8 @@ __FBSDID("$FreeBSD$");
 #include <ieeefp.h>
 #endif
 
+#include "test-utils.h"
+
 /*
  * XXX The volatile here is to avoid gcc's bogus constant folding and work
  *     around the lack of support for the FENV_ACCESS pragma.
@@ -49,7 +51,8 @@ __FBSDID("$FreeBSD$");
        volatile double _d = x;                                         \
        assert(feclearexcept(FE_ALL_EXCEPT) == 0);                      \
        assert((func)(_d) == (result) || fetestexcept(FE_INVALID));     \
-       assert(fetestexcept(FE_ALL_EXCEPT) == (excepts));               \
+       assert((fetestexcept(FE_ALL_EXCEPT) & ALL_STD_EXCEPT)           \
+                       == (excepts));                                  \
 } while (0)
 
 #define        testall(x, result, excepts)     do {                            
\
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to