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

commit r15-9382-gc3ba75f6ac7d1e72faabe0cf62453f463359278f
Author: Evgeny Karpov <evgeny.kar...@microsoft.com>
Date:   Tue Sep 3 09:09:52 2024 +0000

    libstdc++: Support aarch64-w64-mingw32 target in fast_float
    
    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.

Diff:
---
 libstdc++-v3/src/c++17/fast_float/fast_float.h | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/libstdc++-v3/src/c++17/fast_float/fast_float.h 
b/libstdc++-v3/src/c++17/fast_float/fast_float.h
index 7551c4f89ef7..3da58f2850ce 100644
--- a/libstdc++-v3/src/c++17/fast_float/fast_float.h
+++ b/libstdc++-v3/src/c++17/fast_float/fast_float.h
@@ -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;

Reply via email to