FreeBSD 16 switched the powerpc64le base ABI to IEEE binary128 for long
double (matching the direction of powerpc64le-linux).  For GCC to be
ABI-compatible with the FreeBSD system it must likewise default long
double to IEEE-128.  GCC already supports this on powerpc64le-linux; this
series wires FreeBSD into the same paths.

Patches 1-3 are FreeBSD target enablement mirroring the existing
powerpc64le-linux IEEE-128 support.  Patch 4 is a general libgfortran bug
that any IEEE-128 long double target hits (it breaks the build), and is
independent of the rest.

Tested by building GCC from git on powerpc64le-unknown-freebsd16.0 with
--with-long-double-format=ieee: builds to completion, long double
defaults to IEEE binary128, and f951 and libgfortran.so.5 are produced.

Piotr Kubaj (4):
  rs6000: default long double to IEEE 128-bit on powerpc*le
  configure: accept --with-long-double-format on powerpc64le-*-freebsd*
  libgcc: build float128 support for powerpc64*-*-freebsd*
  libgfortran: don't add REAL(KIND=17) when long double is IEEE 128-bit

 gcc/config.gcc               | 5 ++++-
 gcc/configure.ac             | 3 ++-
 libgcc/config.host           | 6 ++++++
 libgfortran/kinds-override.h | 2 +-
 4 files changed, 13 insertions(+), 3 deletions(-)

-- 
2.49.0

Reply via email to