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>
This commit is contained in:
Saurabh Jha
2026-03-09 19:54:48 +00:00
parent 0f253792b7
commit b95bfa1ff2
2 changed files with 2 additions and 2 deletions

View 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

View 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"