From 42699bf40852d3eba690682e6c86e3240bf4d576 Mon Sep 17 00:00:00 2001 From: jk-jeon <33922675+jk-jeon@users.noreply.github.com> Date: Fri, 18 Sep 2020 11:07:01 -0700 Subject: [PATCH] Fix msvc version of clz & clzll (#1880) Change msvc version of clz & clzll to match __builtin_clz & _builtin_clzll --- include/fmt/format.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/include/fmt/format.h b/include/fmt/format.h index 295b8071..b464959d 100644 --- a/include/fmt/format.h +++ b/include/fmt/format.h @@ -195,7 +195,7 @@ namespace detail { # ifndef __clang__ # pragma intrinsic(_BitScanReverse) # endif -inline uint32_t clz(uint32_t x) { +inline int clz(uint32_t x) { unsigned long r = 0; _BitScanReverse(&r, x); @@ -204,7 +204,7 @@ inline uint32_t clz(uint32_t x) { // "r", but the only way that can happen is if "x" is 0, // which the callers guarantee to not happen. FMT_SUPPRESS_MSC_WARNING(6102) - return 31 - r; + return 31 - static_cast(r); } # define FMT_BUILTIN_CLZ(n) detail::clz(n) @@ -212,7 +212,7 @@ inline uint32_t clz(uint32_t x) { # pragma intrinsic(_BitScanReverse64) # endif -inline uint32_t clzll(uint64_t x) { +inline int clzll(uint64_t x) { unsigned long r = 0; # ifdef _WIN64 _BitScanReverse64(&r, x); @@ -229,7 +229,7 @@ inline uint32_t clzll(uint64_t x) { // "r", but the only way that can happen is if "x" is 0, // which the callers guarantee to not happen. FMT_SUPPRESS_MSC_WARNING(6102) - return 63 - r; + return 63 - static_cast(r); } # define FMT_BUILTIN_CLZLL(n) detail::clzll(n) } // namespace detail