From d0bded5988198abbaf3974bdedd30a6cb48c0562 Mon Sep 17 00:00:00 2001 From: Brainy0207 <80522992+Brainy0207@users.noreply.github.com> Date: Mon, 15 Mar 2021 16:17:28 +0100 Subject: [PATCH] Fix MSVC /clr builds (#2179) --- include/fmt/format.h | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/include/fmt/format.h b/include/fmt/format.h index 06f85a7c..1a76ebd4 100644 --- a/include/fmt/format.h +++ b/include/fmt/format.h @@ -204,17 +204,18 @@ FMT_END_NAMESPACE // __builtin_clz and __builtin_clzll, so only define FMT_BUILTIN_CLZ using the // MSVC intrinsics if the clz and clzll builtins are not available. #if FMT_MSC_VER && !defined(FMT_BUILTIN_CLZLL) && \ - !defined(FMT_BUILTIN_CTZLL) && !defined(_MANAGED) + !defined(FMT_BUILTIN_CTZLL) FMT_BEGIN_NAMESPACE namespace detail { // Avoid Clang with Microsoft CodeGen's -Wunknown-pragmas warning. -# ifndef __clang__ +# if !defined(__clang__) +# pragma managed(push, off) # pragma intrinsic(_BitScanForward) # pragma intrinsic(_BitScanReverse) -# endif -# if defined(_WIN64) && !defined(__clang__) -# pragma intrinsic(_BitScanForward64) -# pragma intrinsic(_BitScanReverse64) +# if defined(_WIN64) +# pragma intrinsic(_BitScanForward64) +# pragma intrinsic(_BitScanReverse64) +# endif # endif inline int clz(uint32_t x) { @@ -270,6 +271,9 @@ inline int ctzll(uint64_t x) { return static_cast(r); } # define FMT_BUILTIN_CTZLL(n) detail::ctzll(n) +# if !defined(__clang__) +# pragma managed(pop) +# endif } // namespace detail FMT_END_NAMESPACE #endif