From e63125f1a1c03abbaabb489a00d88fc9224fb095 Mon Sep 17 00:00:00 2001 From: "Philipp A. Hartmann" Date: Thu, 10 Jul 2014 13:09:15 +0200 Subject: [PATCH] MSVC: fix SSE/intrinsic support MSVC with enabled RAPIDJSON_SSE2/RAPIDJSON_SSE42 requires the explicit definition of the `_BitScanForward` intrinsic. This can be reliably ensured by including "intrin.h" and properly marking '_BitScanForward' as intrinsic. Confirmed on MSVC 2005, 2008. Should fix https://code.google.com/p/rapidjson/issues/detail?id=96 --- include/rapidjson/reader.h | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/include/rapidjson/reader.h b/include/rapidjson/reader.h index 59d03b6..bd141a1 100644 --- a/include/rapidjson/reader.h +++ b/include/rapidjson/reader.h @@ -9,6 +9,10 @@ #include "internal/pow10.h" #include "internal/stack.h" +#if defined(RAPIDJSON_SIMD) && defined(_MSC_VER) +#include +#pragma intrinsic(_BitScanForward) +#endif #ifdef RAPIDJSON_SSE42 #include #elif defined(RAPIDJSON_SSE2) @@ -16,8 +20,8 @@ #endif #ifdef _MSC_VER -#pragma warning(push) -#pragma warning(disable : 4127) // conditional expression is constant +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(4127) // conditional expression is constant #endif #ifndef RAPIDJSON_PARSE_ERROR_NORETURN @@ -769,7 +773,7 @@ typedef GenericReader, UTF8<> > Reader; } // namespace rapidjson #ifdef _MSC_VER -#pragma warning(pop) +RAPIDJSON_DIAG_POP #endif #endif // RAPIDJSON_READER_H_