From 101aaca178cab764ee6f7d570023462335788104 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sat, 19 Mar 2011 17:57:16 +0000 Subject: [PATCH] Don't take the address of extern "C" functions: some compilers (PGI for example) don't allow mixing pointers to extern "C" and pointers to extern "C++". Actually call the functions instead and make sure they all work as advertised. [SVN r70202] --- test/boost_no_fenv_h.ipp | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/test/boost_no_fenv_h.ipp b/test/boost_no_fenv_h.ipp index 7bfe4446..5acfee8d 100644 --- a/test/boost_no_fenv_h.ipp +++ b/test/boost_no_fenv_h.ipp @@ -34,20 +34,24 @@ int test() #if !defined(FE_ALL_EXCEPT) #error platform does not define FE_ALL_EXCEPT #endif + + int i; + fexcept_t fe; + fenv_t env; - int (*has_feclearexcept)(int ) = ::feclearexcept; - int (*has_fegetexceptflag)(fexcept_t *, int ) = fegetexceptflag; - int (*has_feraiseexcept)(int ) = feraiseexcept; - int (*has_fesetexceptflag)(const fexcept_t *, int ) = fesetexceptflag; - int (*has_fetestexcept)(int ) = fetestexcept; - int (*has_fegetround)(void) = fegetround; - int (*has_fesetround)(int ) = fesetround; - int (*has_fegetenv)(fenv_t *) = fegetenv; - int (*has_feholdexcept)(fenv_t *) = feholdexcept; - int (*has_fesetenv)(const fenv_t *) = fesetenv; - int (*has_feupdateenv)(const fenv_t *) = feupdateenv; + i = feclearexcept(FE_ALL_EXCEPT); + i += fetestexcept(FE_ALL_EXCEPT); // All flags should be zero + i += fegetexceptflag(&fe, FE_ALL_EXCEPT); + i += fesetexceptflag(&fe, FE_ALL_EXCEPT); + i += feraiseexcept(0); + i += fesetround(fegetround()); + i += fegetenv(&env); + i += fesetenv(&env); + i += feholdexcept(&env); + if(i) + i += feupdateenv(&env); - return 0; + return i; } }