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"