This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC 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]

[PATCH], Add configuration checks to PowerPC --with-long-double-format=ieee


This patch adds a simple check of whether the GLIBC should be capable of
switching the long double format on the PowerPC to IEEE 128-bit floating point.
At the moment, library work is not yet finished, but I'm assuming that the
patches will be in place when GLIBC 2.28 is released.  If it turns out that the
finished support does not make it until 2.29, we can adjust the patch later.

Right now, if you use standard GLIBC 2.27 or earlier (ignoring the bits that
actually use long double that will need to be handled), you will not be able to
build libstdc++-v3 when long double is configured to be IEEE 128-bit due to
errors with overloaded functions like issignalling (where both __float128 and
long double versions are defined).  The GLIBC team has a fix for this, and it
should appear in 2.28.

This patch checks whether the GLIBC version is 2.28 before allowing you to
switch the long double type.  Because the work to prepare GLIBC for the switch
is being done using an Advance Toolchain framework, the patch allows an Advance
Toolchain 2.27 with the --with-advance-toolchain configuration option (the
official AT 11 release uses GLIBC 2.26 as a framework, and when completed the
AT 12 release should use GLIBC 2.28).

I have checked it on a little endian power8 system, building both toolchains
using IBM long double and IEEE long double configurations.  The tests that
depend on the library support for long double that failed before still fail.

I also did IEEE long double builds using the host GLIBC and that AT 11, and
verified that once GCC is configured it generates an error.  I built bootstrap
compilers on a big endian system, and verified if I selected IEEE long double,
it would fail, since I currently don't have a big endian GLIBC with the fixes
installed.

Can I check this in the trunk at on the GCC 8 branch?

2018-07-05  Michael Meissner  <meissner@linux.ibm.com>

	* configure.ac (powerpc64*-*-linux*): Combine big and little
	endian checks for the long double format.  Add checks to make sure
	the GLIBC can handle configuration of long double to be IEEE
	128-bit before building GCC.
	* configure: Regenerate.

-- 
Michael Meissner, IBM
IBM, M/S 2506R, 550 King Street, Littleton, MA 01460-6245, USA
email: meissner@linux.ibm.com, phone: +1 (978) 899-4797

Attachment: ieee128-patch129b
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]