From f7797077732dba4590eecd184ca5e4d9ca603d28 Mon Sep 17 00:00:00 2001 From: archo5 <1819544+archo5@users.noreply.github.com> Date: Mon, 25 May 2026 20:57:37 +0300 Subject: [PATCH] added a missing feature check ifdef for is_constant_evaluated needed for VS2017+x64 support --- zmij.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/zmij.cc b/zmij.cc index 5e07cc4..c5bc81b 100644 --- a/zmij.cc +++ b/zmij.cc @@ -282,14 +282,16 @@ constexpr auto umul128(uint64_t x, uint64_t y) noexcept -> uint128_t { #if ZMIJ_USE_INT128 return uint128_t(x) * y; #else -# if defined(_M_AMD64) +# ifdef __cpp_lib_is_constant_evaluated +# if defined(_M_AMD64) if (!__builtin_is_constant_evaluated()) { uint64_t hi = 0; uint64_t lo = _umul128(x, y, &hi); return {hi, lo}; } -# elif defined(_M_ARM64) +# elif defined(_M_ARM64) if (!__builtin_is_constant_evaluated()) return {__umulh(x, y), x * y}; +# endif # endif uint64_t a = x >> 32; uint64_t b = uint32_t(x);