Try using asm-based fenced block for pathscale.
diff --git a/asio/include/asio/detail/fenced_block.hpp b/asio/include/asio/detail/fenced_block.hpp
index 6c69f12..60198bc 100644
--- a/asio/include/asio/detail/fenced_block.hpp
+++ b/asio/include/asio/detail/fenced_block.hpp
@@ -30,7 +30,7 @@
 #elif defined(__GNUC__) \
   && ((__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)) \
   && !defined(__INTEL_COMPILER) && !defined(__ICL) \
-  && !defined(__ICC) && !defined(__ECC)
+  && !defined(__ICC) && !defined(__ECC) && !defined(__PATHSCALE__)
 # include "asio/detail/gcc_fenced_block.hpp"
 #elif defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
 # include "asio/detail/gcc_x86_fenced_block.hpp"
@@ -52,7 +52,7 @@
 #elif defined(__GNUC__) \
   && ((__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)) \
   && !defined(__INTEL_COMPILER) && !defined(__ICL) \
-  && !defined(__ICC) && !defined(__ECC)
+  && !defined(__ICC) && !defined(__ECC) && !defined(__PATHSCALE__)
 typedef gcc_fenced_block fenced_block;
 #elif defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
 typedef gcc_x86_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 be44945..23303fb 100644
--- a/asio/include/asio/detail/gcc_fenced_block.hpp
+++ b/asio/include/asio/detail/gcc_fenced_block.hpp
@@ -24,7 +24,7 @@
 #if defined(__GNUC__) \
   && ((__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)) \
   && !defined(__INTEL_COMPILER) && !defined(__ICL) \
-  && !defined(__ICC) && !defined(__ECC)
+  && !defined(__ICC) && !defined(__ECC) && !defined(__PATHSCALE__)
 
 namespace asio {
 namespace detail {
@@ -56,7 +56,7 @@
 #endif // defined(__GNUC__)
        // && ((__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4))
        // && !defined(__INTEL_COMPILER) && !defined(__ICL)
-       // && !defined(__ICC) && !defined(__ECC)
+       // && !defined(__ICC) && !defined(__ECC) && !defined(__PATHSCALE__)
 
 #include "asio/detail/pop_options.hpp"