]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
libstdc++: Support aarch64-w64-mingw32 target in fast_float
authorEvgeny Karpov <Evgeny.Karpov@microsoft.com>
Tue, 3 Sep 2024 09:09:52 +0000 (09:09 +0000)
committerJonathan Wakely <redi@gcc.gnu.org>
Fri, 11 Apr 2025 13:18:55 +0000 (14:18 +0100)
This patch resolves the GCC compilation issue for the C++ language
targeting aarch64-w64-mingw32.

The change in fast_float has been upstreamed.
https://github.com/fastfloat/fast_float/pull/269

libstdc++-v3/ChangeLog:

* src/c++17/fast_float/fast_float.h (full_multiplication):
Support aarch64-w64-mingw32 target.

libstdc++-v3/src/c++17/fast_float/fast_float.h

index 7551c4f89ef7b89c638995852e086109c1f43b4f..3da58f2850ce8d6fcb554aa13aa6719996485a61 100644 (file)
@@ -275,7 +275,8 @@ fastfloat_really_inline value128 full_multiplication(uint64_t a,
   // But MinGW on ARM64 doesn't have native support for 64-bit multiplications
   answer.high = __umulh(a, b);
   answer.low = a * b;
-#elif defined(FASTFLOAT_32BIT) || (defined(_WIN64) && !defined(__clang__))
+#elif defined(FASTFLOAT_32BIT) ||                                              \
+    (defined(_WIN64) && !defined(__clang__) && !defined(_M_ARM64))
   answer.low = _umul128(a, b, &answer.high); // _umul128 not available on ARM64
 #elif defined(FASTFLOAT_64BIT)
   __uint128_t r = ((__uint128_t)a) * b;