Try to fix compile errors on various platforms in fenced_block..
diff --git a/asio/include/asio/detail/fenced_block.hpp b/asio/include/asio/detail/fenced_block.hpp index 6b88b72..6c69f12 100644 --- a/asio/include/asio/detail/fenced_block.hpp +++ b/asio/include/asio/detail/fenced_block.hpp
@@ -28,11 +28,13 @@ #elif defined(__sun) # include "asio/detail/solaris_fenced_block.hpp" #elif defined(__GNUC__) \ - && ((__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)) + && ((__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)) \ + && !defined(__INTEL_COMPILER) && !defined(__ICL) \ + && !defined(__ICC) && !defined(__ECC) # include "asio/detail/gcc_fenced_block.hpp" #elif defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) # include "asio/detail/gcc_x86_fenced_block.hpp" -#elif defined(BOOST_WINDOWS) +#elif defined(BOOST_WINDOWS) && !defined(UNDER_CE) # include "asio/detail/win_fenced_block.hpp" #else # include "asio/detail/null_fenced_block.hpp" @@ -48,11 +50,13 @@ #elif defined(__sun) typedef solaris_fenced_block fenced_block; #elif defined(__GNUC__) \ - && ((__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)) + && ((__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)) \ + && !defined(__INTEL_COMPILER) && !defined(__ICL) \ + && !defined(__ICC) && !defined(__ECC) typedef gcc_fenced_block fenced_block; #elif defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) typedef gcc_x86_fenced_block fenced_block; -#elif defined(BOOST_WINDOWS) +#elif defined(BOOST_WINDOWS) && !defined(UNDER_CE) typedef win_fenced_block fenced_block; #else typedef null_fenced_block fenced_block;
diff --git a/asio/include/asio/detail/gcc_fenced_block.hpp b/asio/include/asio/detail/gcc_fenced_block.hpp index 2e86e13..be44945 100644 --- a/asio/include/asio/detail/gcc_fenced_block.hpp +++ b/asio/include/asio/detail/gcc_fenced_block.hpp
@@ -22,7 +22,9 @@ #include "asio/detail/pop_options.hpp" #if defined(__GNUC__) \ - && ((__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)) + && ((__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)) \ + && !defined(__INTEL_COMPILER) && !defined(__ICL) \ + && !defined(__ICC) && !defined(__ECC) namespace asio { namespace detail { @@ -53,6 +55,8 @@ #endif // defined(__GNUC__) // && ((__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)) + // && !defined(__INTEL_COMPILER) && !defined(__ICL) + // && !defined(__ICC) && !defined(__ECC) #include "asio/detail/pop_options.hpp"
diff --git a/asio/include/asio/detail/win_fenced_block.hpp b/asio/include/asio/detail/win_fenced_block.hpp index 8145ede..6338488 100644 --- a/asio/include/asio/detail/win_fenced_block.hpp +++ b/asio/include/asio/detail/win_fenced_block.hpp
@@ -21,7 +21,7 @@ #include <boost/config.hpp> #include "asio/detail/pop_options.hpp" -#if defined(BOOST_WINDOWS) +#if defined(BOOST_WINDOWS) && !defined(UNDER_CE) #include "asio/detail/socket_types.hpp" @@ -35,20 +35,40 @@ // Constructor. win_fenced_block() { +#if defined(BOOST_MSVC) && (BOOST_MSVC < 1400) +# if defined(_M_IX86) +# pragma warning(push) +# pragma warning(disable:4793) + LONG barrier; + __asm { xchg barrier, eax } +# pragma warning(pop) +# endif // defined(_M_IX86) +#else // defined(BOOST_MSVC) && (BOOST_MSVC < 1400) MemoryBarrier(); +#endif // defined(BOOST_MSVC) && (BOOST_MSVC < 1400) } // Destructor. ~win_fenced_block() { +#if defined(BOOST_MSVC) && (BOOST_MSVC < 1400) +# if defined(_M_IX86) +# pragma warning(push) +# pragma warning(disable:4793) + LONG barrier; + __asm { xchg barrier, eax } +# pragma warning(pop) +# endif // defined(_M_IX86) +#else // defined(BOOST_MSVC) && (BOOST_MSVC < 1400) MemoryBarrier(); +#endif // defined(BOOST_MSVC) && (BOOST_MSVC < 1400) } }; } // namespace detail } // namespace asio -#endif // defined(BOOST_WINDOWS) +#endif // defined(BOOST_WINDOWS) && !defined(UNDER_CE) #include "asio/detail/pop_options.hpp"