[gcc r16-8332] aarch64: mingw: Disable _Float128 emulation

Saurabh Jha saurabhjha@gcc.gnu.org
Mon Mar 30 11:43:43 GMT 2026


https://gcc.gnu.org/g:b95bfa1ff2cf4ae625955fe230f16a2ee55270a2

commit r16-8332-gb95bfa1ff2cf4ae625955fe230f16a2ee55270a2
Author: Saurabh Jha <saurabh.jha@arm.com>
Date:   Mon Mar 9 19:54:48 2026 +0000

    aarch64: mingw: Disable _Float128 emulation
    
    The Windows ABI doesn't support _Float128:
    https://learn.microsoft.com/en-us/cpp/build/ieee-floating-point-representation.
    
    While it can be emulated for this target, the current implementation
    prevents fortran from being built with this emulation.
    
    This patch disables _Float128 emulation for aarch64-w64-mingw32 target.
    This enables fortran to be built with no additional changes.
    
    gcc/ChangeLog:
    
            * config/aarch64/aarch64.cc
            (aarch64_scalar_mode_supported_p): Only return true on TFmode if
            TARGET_LONG_DOUBLE_128 is set.
    
    libgcc/ChangeLog:
            * config.host: Disable soft floating point.
    
    Co-Authored-By: Evgeny Karpov <evgeny.karpov@arm.com>

Diff:
---
 gcc/config/aarch64/aarch64.cc | 2 +-
 libgcc/config.host            | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/gcc/config/aarch64/aarch64.cc b/gcc/config/aarch64/aarch64.cc
index 1902a4ee9fa3..197d4f272695 100644
--- a/gcc/config/aarch64/aarch64.cc
+++ b/gcc/config/aarch64/aarch64.cc
@@ -30400,7 +30400,7 @@ aarch64_scalar_mode_supported_p (scalar_mode mode)
     return default_decimal_float_supported_p ();
 
   if (mode == TFmode)
-    return true;
+    return TARGET_LONG_DOUBLE_128 != 0;
 
   return ((mode == HFmode || mode == BFmode)
 	  ? true
diff --git a/libgcc/config.host b/libgcc/config.host
index 7e5c99420f88..ac10ccc43404 100644
--- a/libgcc/config.host
+++ b/libgcc/config.host
@@ -468,7 +468,7 @@ aarch64-*-mingw*)
 	tmake_file="${tmake_file} ${cpu_type}/t-aarch64"
 	tmake_file="${tmake_file} ${cpu_type}/t-mingw"
 	tmake_file="${tmake_file} ${cpu_type}/t-lse"
-	tmake_file="${tmake_file} ${cpu_type}/t-softfp t-softfp t-crtfm"
+	tmake_file="${tmake_file} t-crtfm"
 	;;
 alpha*-*-linux*)
 	tmake_file="${tmake_file} alpha/t-alpha alpha/t-ieee t-crtfm alpha/t-linux"


More information about the Gcc-cvs mailing list