diff --git a/include/boost/asio/detail/gcc_x86_fenced_block.hpp b/include/boost/asio/detail/gcc_x86_fenced_block.hpp index aa6d5e1f..f0589abb 100644 --- a/include/boost/asio/detail/gcc_x86_fenced_block.hpp +++ b/include/boost/asio/detail/gcc_x86_fenced_block.hpp @@ -64,7 +64,11 @@ private: static void lbarrier() { #if defined(__SSE2__) +# if (__GNUC__ >= 4) + __builtin_ia32_lfence(); +# else // (__GNUC__ >= 4) __asm__ __volatile__ ("lfence" ::: "memory"); +# endif // (__GNUC__ >= 4) #else // defined(__SSE2__) barrier(); #endif // defined(__SSE2__) @@ -73,7 +77,11 @@ private: static void sbarrier() { #if defined(__SSE2__) +# if (__GNUC__ >= 4) + __builtin_ia32_sfence(); +# else // (__GNUC__ >= 4) __asm__ __volatile__ ("sfence" ::: "memory"); +# endif // (__GNUC__ >= 4) #else // defined(__SSE2__) barrier(); #endif // defined(__SSE2__)