
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
On Sunday, 7. November 2010 21:05:06 admin@thefireflyproject.us wrote:
Author: wash Date: 2010-11-07 15:05:04 EST (Sun, 07 Nov 2010) New Revision: 66442 URL:
Log: Clang hand-holding, mostly for issues caused by Clang defining GCC macros.
I do not think that removing the inclusion of "fenv.h" for clang is the right solution.
The issue isn't just that clang can't find the header.
According to http://llvm.org/bugs/show_bug.cgi?id=6907 it is a known compiler bug that clang fails to correctly load "fenv.h" in certain environments (several gcc versions installed...)
Exactly; and in some environments, it loads the right header, and chokes on it. All depends on your platform/version of clang/standard library.
I've been working around this by simply adding (see below)
I have fixed this issue in my github fork of clang; however, the majority of clang users use clang 2.8 or clang 2.7, and that's where we've got problems.
Text files modified: trunk/boost/math/tools/config.hpp | 2 +- trunk/boost/test/execution_monitor.hpp | 15 ++++++++------- trunk/boost/test/impl/execution_monitor.ipp | 18 +++++++++--------- 3 files changed, 18 insertions(+), 17 deletions(-)
Modified: trunk/boost/math/tools/config.hpp =========================================================================== === --- trunk/boost/math/tools/config.hpp (original) +++ trunk/boost/math/tools/config.hpp 2010-11-07 15:05:04 EST (Sun, 07 Nov 2010) @@ -255,7 +255,7 @@ } // namespace tools }} // namespace boost namespace math
-#if (defined(__linux__) && !defined(__UCLIBC__)) || defined(__QNX__) || defined(__IBMCPP__) +#if (defined(__linux__) && !defined(__UCLIBC__) && !defined(__clang__)) || defined(__QNX__) || defined(__IBMCPP__)
#include <fenv.h>
#if defined(__clang__) #include </usr/include/fenvh.> #else
Well, part of the problem is the location of fenv.h. It's a lot easier for me to just fix the issue.
for my local working copies.
return ~old_cw & BOOST_FPE_ALL; -#elif defined(__GLIBC__) && defined(__USE_GNU) +#elif defined(__GLIBC__) && defined(__USE_GNU) && !defined(BOOST_CLANG)
::feclearexcept(BOOST_FPE_ALL);
And this actually removes fp-Support from Boost.Test.
Yes, it does (remove it for clang). I'm working on a longer term solution.
Not good.
Yep.
Please find a better solution.
As I said, working on it ;). - -- Bryce Lelbach aka wash http://groups.google.com/group/ariel_devel -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEARECAAYFAkzXDmoACgkQO/fqqIuE2t538ACg3P6vJYunrIv/66mX8hrZchM+ lzkAoKFNPlaHg29HcW/5ITE+9dP9pow5 =F2hr -----END PGP SIGNATURE-----