-
Notifications
You must be signed in to change notification settings - Fork 2.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
changed detection of Intel Compiler Classic to distinguish MS-Windows #2510
Changes from 2 commits
3acda1c
17fb5de
a29db70
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -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_POSIX | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think you can simplify this to just #if FMT_GCC_VERSION || FMT_HAS_BUILTIN(__builtin_ctz) || FMT_ICC_POSIX and similarly below. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Unfortunately not. |
||
# 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_POSIX | ||
# 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<int>(r); | ||
} | ||
# define FMT_BUILTIN_CTZLL(n) detail::ctzll(n) | ||
# if !defined(__clang__) | ||
# pragma managed(pop) | ||
# endif | ||
} // namespace detail | ||
FMT_END_NAMESPACE | ||
#endif | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why is
FMT_ICC_POSIX
equal to 1 for other compilers?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You are making a good point. It is misleading. But it makes sure the intrinsic detection still works here for other compilers:
fmt/include/fmt/format.h
Lines 168 to 169 in 17fb5de
Since this is essentially a work around for a compiler bug, perhaps we should introduce something like FMT_ICC_BUILTIN_CTZ_BUG to be crystal clear about it?