[trippels-ppc64le][math] Missing quadmath.h errors
Hi, I'm seeing some test failures on the trippels-powerpc64le-gcc-6.0 tester that amount to Boost.Math failing to build because the quadmath.h header is missing. http://www.boost.org/development/tests/develop/developer/output/trippels-pow... I understand that gcc 6.0 is an unreleased compiler, but the error is probably not a consequence of a compiler bug. Besides, another tester, Flast-FreeBSD10-gcc-6.0.0~gnu++11, passes. Is it possible that the header is not provided for powerpc64le? Or is an optional dependency whose presence is misdetected? Is this a known problem?
On 16/11/2015 10:48, Andrey Semashev wrote:
Hi,
I'm seeing some test failures on the trippels-powerpc64le-gcc-6.0 tester that amount to Boost.Math failing to build because the quadmath.h header is missing.
http://www.boost.org/development/tests/develop/developer/output/trippels-pow...
I understand that gcc 6.0 is an unreleased compiler, but the error is probably not a consequence of a compiler bug. Besides, another tester, Flast-FreeBSD10-gcc-6.0.0~gnu++11, passes. Is it possible that the header is not provided for powerpc64le? Or is an optional dependency whose presence is misdetected? Is this a known problem?
Not a known problem, no. My understanding is that libquadmath is an integral part of GCC, and I see that BOOST_HAS_FLOAT128 is defined for that platform - and that's predicated on _GLIBCXX_USE_FLOAT128 so __float128 appears to be supported? The GCC manual is a little unclear to me when this is supposed to be supported: https://gcc.gnu.org/onlinedocs/gcc/Floating-Types.html. What happens on that platform with older (released) compilers? Thanks, John.
On 2015-11-16 14:47, John Maddock wrote:
On 16/11/2015 10:48, Andrey Semashev wrote:
Hi,
I'm seeing some test failures on the trippels-powerpc64le-gcc-6.0 tester that amount to Boost.Math failing to build because the quadmath.h header is missing.
http://www.boost.org/development/tests/develop/developer/output/trippels-pow...
I understand that gcc 6.0 is an unreleased compiler, but the error is probably not a consequence of a compiler bug. Besides, another tester, Flast-FreeBSD10-gcc-6.0.0~gnu++11, passes. Is it possible that the header is not provided for powerpc64le? Or is an optional dependency whose presence is misdetected? Is this a known problem?
Not a known problem, no.
My understanding is that libquadmath is an integral part of GCC, and I see that BOOST_HAS_FLOAT128 is defined for that platform - and that's predicated on _GLIBCXX_USE_FLOAT128 so __float128 appears to be supported? The GCC manual is a little unclear to me when this is supposed to be supported: https://gcc.gnu.org/onlinedocs/gcc/Floating-Types.html.
What happens on that platform with older (released) compilers?
I really don't know as I don't have access to a PPC machine. But after installing gcc 5.2.1 cross-compilers for ppc64le, aarch64, armhf on my local Kubuntu I couldn't find quadmath.h for these architectures - only the x86 and x86_64 ones. Also, the release notes for gcc 4.6 [1] only mention x86, x86-64 and Itanium as the platforms that support libquadmath. Looking at the gcc package build scripts in Ubuntu there's definitely some special casing regarding quadmath for these architectures: ia64 i386 i486 i586 i686 amd64. My understanding is that gcc may support __float128 type, which probably includes only the arithmetic/relational operators. libquadmath implements math functions for these types (sin, cos, etc.), and it may not support the architecture where gcc supports __float128. So it has to be detected separately. I would suggest using __has_include when possible and hard-locking to x86, x86-64 and IA64 when not. [1]: https://gcc.gnu.org/gcc-4.6/changes.html
On 2015.11.16 at 15:33 +0300, Andrey Semashev wrote:
On 2015-11-16 14:47, John Maddock wrote:
On 16/11/2015 10:48, Andrey Semashev wrote:
Hi,
I'm seeing some test failures on the trippels-powerpc64le-gcc-6.0 tester that amount to Boost.Math failing to build because the quadmath.h header is missing.
http://www.boost.org/development/tests/develop/developer/output/trippels-pow...
I understand that gcc 6.0 is an unreleased compiler, but the error is probably not a consequence of a compiler bug. Besides, another tester, Flast-FreeBSD10-gcc-6.0.0~gnu++11, passes. Is it possible that the header is not provided for powerpc64le? Or is an optional dependency whose presence is misdetected? Is this a known problem?
Not a known problem, no.
My understanding is that libquadmath is an integral part of GCC, and I see that BOOST_HAS_FLOAT128 is defined for that platform - and that's predicated on _GLIBCXX_USE_FLOAT128 so __float128 appears to be supported? The GCC manual is a little unclear to me when this is supposed to be supported: https://gcc.gnu.org/onlinedocs/gcc/Floating-Types.html.
What happens on that platform with older (released) compilers?
I really don't know as I don't have access to a PPC machine. But after installing gcc 5.2.1 cross-compilers for ppc64le, aarch64, armhf on my local Kubuntu I couldn't find quadmath.h for these architectures - only the x86 and x86_64 ones. Also, the release notes for gcc 4.6 [1] only mention x86, x86-64 and Itanium as the platforms that support libquadmath. Looking at the gcc package build scripts in Ubuntu there's definitely some special casing regarding quadmath for these architectures: ia64 i386 i486 i586 i686 amd64.
My understanding is that gcc may support __float128 type, which probably includes only the arithmetic/relational operators. libquadmath implements math functions for these types (sin, cos, etc.), and it may not support the architecture where gcc supports __float128. So it has to be detected separately.
I would suggest using __has_include when possible and hard-locking to x86, x86-64 and IA64 when not.
Please see: https://gcc.gnu.org/wiki/Ieee128PowerPC (I run the trippels-powerpc64le-gcc-6.0 tests.) -- Markus
I would suggest using __has_include when possible and hard-locking to x86, x86-64 and IA64 when not.
OK, in develop as https://github.com/boostorg/math/commit/477ab19672df13d2e87e5db78d4c008cb2fd... John.
On Mon, Nov 16, 2015 at 9:37 PM, John Maddock
I would suggest using __has_include when possible and hard-locking to x86, x86-64 and IA64 when not.
OK, in develop as https://github.com/boostorg/math/commit/477ab19672df13d2e87e5db78d4c008cb2fd...
Thanks, it seems to have helped. I hope it'll make it to 1.60?
participants (3)
-
Andrey Semashev
-
John Maddock
-
Markus Trippelsdorf