Index: source/cpu_id.cc |
diff --git a/source/cpu_id.cc b/source/cpu_id.cc |
index d64d9d565729d8b371794440d961b92747e75a1f..84927ebc3e2b730fd637ee3519d6881c8751d556 100644 |
--- a/source/cpu_id.cc |
+++ b/source/cpu_id.cc |
@@ -15,7 +15,7 @@ |
#endif |
#if !defined(__pnacl__) && !defined(__CLR_VER) && \ |
!defined(__native_client__) && (defined(_M_IX86) || defined(_M_X64)) && \ |
- defined(_MSC_VER) && (_MSC_FULL_VER >= 160040219) |
+ defined(_MSC_FULL_VER) && (_MSC_FULL_VER >= 160040219) |
#include <immintrin.h> // For _xgetbv() |
#endif |
@@ -36,7 +36,8 @@ extern "C" { |
// For functions that use the stack and have runtime checks for overflow, |
// use SAFEBUFFERS to avoid additional check. |
-#if (defined(_MSC_VER) && !defined(__clang__)) && (_MSC_FULL_VER >= 160040219) |
+#if defined(_MSC_FULL_VER) && (_MSC_FULL_VER >= 160040219) && \ |
+ !defined(__clang__) |
#define SAFEBUFFERS __declspec(safebuffers) |
#else |
#define SAFEBUFFERS |
@@ -50,7 +51,7 @@ LIBYUV_API |
void CpuId(uint32 info_eax, uint32 info_ecx, uint32* cpu_info) { |
#if defined(_MSC_VER) |
// Visual C version uses intrinsic or inline x86 assembly. |
-#if (_MSC_FULL_VER >= 160040219) |
+#if defined(_MSC_FULL_VER) && (_MSC_FULL_VER >= 160040219) |
__cpuidex((int*)(cpu_info), info_eax, info_ecx); |
#elif defined(_M_IX86) |
__asm { |
@@ -117,7 +118,7 @@ void CpuId(uint32 eax, uint32 ecx, uint32* cpu_info) { |
// X86 CPUs have xgetbv to detect OS saves high parts of ymm registers. |
int GetXCR0() { |
uint32 xcr0 = 0u; |
-#if (_MSC_FULL_VER >= 160040219) |
+#if defined(_MSC_FULL_VER) && (_MSC_FULL_VER >= 160040219) |
xcr0 = (uint32)(_xgetbv(0)); // VS2010 SP1 required. |
#elif defined(__i386__) || defined(__x86_64__) |
asm(".byte 0x0f, 0x01, 0xd0" : "=a" (xcr0) : "c" (0) : "%edx"); |