Hi Evgeny,
> On 2 Sep 2024, at 15:03, Evgeny Karpov <[email protected]> wrote:
>
> External email: Use caution opening links or attachments
>
>
> The patch resolves compilation issues for the C++ language. Previous
> patch series contributed to C++ as well, however, C++ could not be
> tested until we got a C++ compiler and could build at least a "Hello
> World" C++ program, and in reality, more than that.
>
> gcc/ChangeLog:
>
> * config.gcc: Add missing dependencies.
>
> libstdc++-v3/ChangeLog:
>
> * src/c++17/fast_float/fast_float.h (defined): Adjust a condition
> for AArch64.
libstdc++ is reviewed on its own list (CC’ed here) so I’d suggest splitting the
libstdc++-v3 hunk into its own patch and submitting it separately there for
review.
Thanks,
Kyrill
> ---
> gcc/config.gcc | 1 +
> libstdc++-v3/src/c++17/fast_float/fast_float.h | 3 ++-
> 2 files changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/gcc/config.gcc b/gcc/config.gcc
> index a36dd1bcbc6..e1117c273f0 100644
> --- a/gcc/config.gcc
> +++ b/gcc/config.gcc
> @@ -1283,6 +1283,7 @@ aarch64-*-mingw*)
> extra_options="${extra_options} mingw/cygming.opt mingw/mingw.opt"
> extra_objs="${extra_objs} winnt.o winnt-dll.o"
> c_target_objs="${c_target_objs} msformat-c.o"
> + cxx_target_objs="${cxx_target_objs} msformat-c.o"
> d_target_objs="${d_target_objs} winnt-d.o"
> tmake_file="${tmake_file} mingw/t-cygming"
> case ${enable_threads} in
> 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 7551c4f89ef..dc61de7b199 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;
> --
> 2.34.1
>