[PATCH v3 1/7] rs6000: default long double to IEEE 128-bit on powerpc*le

Piotr Kubaj <[email protected]> Wed, 15 Jul 2026 08:24:16 +0200
Newsgroups gmane.comp.gcc.patches,gmane.comp.gcc.fortran
Message-ID <[email protected]>
When GCC is configured with --with-long-double-format=ieee, set the
IEEE-quad target defines for powerpc*le so that long double defaults to
IEEE binary128.  This is required for powerpc64le-*-freebsd*: FreeBSD 16
uses IEEE-128 long double in its base ABI.

gcc/ChangeLog:

	* config.gcc (powerpc*le-*-*): Set RS6000_DEFAULT_LONG_DOUBLE_SIZE,
	TARGET_IEEEQUAD_DEFAULT and TARGET_FLOAT128_ENABLE_TYPE when
	--with-long-double-format=ieee.

Signed-off-by: Piotr Kubaj <[email protected]>
---
 gcc/config.gcc | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/gcc/config.gcc b/gcc/config.gcc
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -3071,7 +3071,10 @@
 	tmake_file="rs6000/t-fprules rs6000/t-ppcos ${tmake_file} rs6000/t-ppccomm"
 	case ${target} in
 	    powerpc*le-*-*)
-		tm_file="${tm_file} rs6000/sysv4le.h" ;;
+		tm_file="${tm_file} rs6000/sysv4le.h"
+		if test x$with_long_double_format = xieee; then
+		    tm_defines="${tm_defines} RS6000_DEFAULT_LONG_DOUBLE_SIZE=128 TARGET_IEEEQUAD_DEFAULT=1 TARGET_FLOAT128_ENABLE_TYPE=1"
+		fi ;;
 	esac
 	case ${target} in
 	     powerpc64*)

-- 
2.49.0