From 32865aeaab0c098275d03ab7f47b9968da4481e8 Mon Sep 17 00:00:00 2001 From: Mathias Born <79849981+mborn-adi@users.noreply.github.com> Date: Sat, 2 Oct 2021 14:43:41 +0200 Subject: [PATCH] changed detection of Intel Compiler Classic to distinguish MS-Windows (#2510) * changed detection of Intel Compiler Classic to distinguish MS-Windows * replaced !FMT_ICC_ON_WINDOWS by FMT_ICC_POSIX removed #pragma manged * replaced FMT_ICC_POSIX with FMT_ICC_INTRINSIC_BUG to be crystal clear about the macro's purpose --- include/fmt/core.h | 7 ++++++- include/fmt/format.h | 19 +++++-------------- 2 files changed, 11 insertions(+), 15 deletions(-) diff --git a/include/fmt/core.h b/include/fmt/core.h index 2bac1cb3..5b494f71 100644 --- a/include/fmt/core.h +++ b/include/fmt/core.h @@ -32,10 +32,15 @@ # define FMT_GCC_PRAGMA(arg) #endif -#if defined(__INTEL_COMPILER) +#ifdef __ICL +# define FMT_ICC_VERSION __ICL +# define FMT_ICC_INTRINSIC_BUG 1 +#elif defined(__INTEL_COMPILER) # define FMT_ICC_VERSION __INTEL_COMPILER +# define FMT_ICC_INTRINSIC_BUG 0 #else # define FMT_ICC_VERSION 0 +# define FMT_ICC_INTRINSIC_BUG 0 #endif #ifdef __NVCC__ diff --git a/include/fmt/format.h b/include/fmt/format.h index 9eeffcde..f9ca2328 100644 --- a/include/fmt/format.h +++ b/include/fmt/format.h @@ -49,14 +49,6 @@ # define FMT_GCC_VISIBILITY_HIDDEN #endif -#ifdef __INTEL_COMPILER -# define FMT_ICC_VERSION __INTEL_COMPILER -#elif defined(__ICL) -# define FMT_ICC_VERSION __ICL -#else -# define FMT_ICC_VERSION 0 -#endif - #ifdef __NVCC__ # define FMT_CUDA_VERSION (__CUDACC_VER_MAJOR__ * 100 + __CUDACC_VER_MINOR__) #else @@ -173,10 +165,13 @@ FMT_END_NAMESPACE !FMT_MSC_VER # define FMT_BUILTIN_CLZLL(n) __builtin_clzll(n) #endif -#if (FMT_GCC_VERSION || FMT_HAS_BUILTIN(__builtin_ctz) || FMT_ICC_VERSION) +#if (FMT_GCC_VERSION || FMT_HAS_BUILTIN(__builtin_ctz) || FMT_ICC_VERSION) && \ + !FMT_ICC_INTRINSIC_BUG # define FMT_BUILTIN_CTZ(n) __builtin_ctz(n) #endif -#if (FMT_GCC_VERSION || FMT_HAS_BUILTIN(__builtin_ctzll) || FMT_ICC_VERSION) +#if (FMT_GCC_VERSION || FMT_HAS_BUILTIN(__builtin_ctzll) || \ + FMT_ICC_VERSION) && \ + !FMT_ICC_INTRINSIC_BUG # define FMT_BUILTIN_CTZLL(n) __builtin_ctzll(n) #endif @@ -192,7 +187,6 @@ FMT_BEGIN_NAMESPACE namespace detail { // Avoid Clang with Microsoft CodeGen's -Wunknown-pragmas warning. # if !defined(__clang__) -# pragma managed(push, off) # pragma intrinsic(_BitScanForward) # pragma intrinsic(_BitScanReverse) # if defined(_WIN64) @@ -254,9 +248,6 @@ inline auto ctzll(uint64_t x) -> int { 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