]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
aarch64: mingw: Disable _Float128 emulation
authorSaurabh Jha <saurabh.jha@arm.com>
Mon, 9 Mar 2026 19:54:48 +0000 (19:54 +0000)
committerSaurabh Jha <saurabh.jha@arm.com>
Mon, 30 Mar 2026 11:43:22 +0000 (11:43 +0000)
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>
gcc/config/aarch64/aarch64.cc
libgcc/config.host

index 1902a4ee9fa34a1f00e654760d0759af1d6cf432..197d4f27269541808ea5f26c61d36c836348b815 100644 (file)
@@ -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
index 7e5c99420f88f63507a006ed8876d3e8f6781245..ac10ccc43404010f6166ab3bd07aa8150ea3ad04 100644 (file)
@@ -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"