aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorxfxyjwf <xfxyjwf@gmail.com>2014-09-18 13:52:31 -0700
committerxfxyjwf <xfxyjwf@gmail.com>2014-09-18 13:52:31 -0700
commit5c8ab2cbb3b88c67623ce1ca1c9d45eb0b47e7ab (patch)
tree7056000052fc10492cec04499086628461e267e8
parent7b6c5d58a86cdfccf6ad6d3239407cba0557cf2c (diff)
parent628a23ba8d8e233815075735c4967bcfae3de342 (diff)
downloadprotobuf-5c8ab2cbb3b88c67623ce1ca1c9d45eb0b47e7ab.tar.gz
protobuf-5c8ab2cbb3b88c67623ce1ca1c9d45eb0b47e7ab.tar.bz2
protobuf-5c8ab2cbb3b88c67623ce1ca1c9d45eb0b47e7ab.zip
Merge pull request #21 from edmonds/branches/clang_generic_atomics
Expose generic atomicops on Clang
-rw-r--r--src/google/protobuf/stubs/atomicops.h3
-rw-r--r--src/google/protobuf/stubs/platform_macros.h3
2 files changed, 4 insertions, 2 deletions
diff --git a/src/google/protobuf/stubs/atomicops.h b/src/google/protobuf/stubs/atomicops.h
index 76c026c9..8ddd2508 100644
--- a/src/google/protobuf/stubs/atomicops.h
+++ b/src/google/protobuf/stubs/atomicops.h
@@ -192,7 +192,8 @@ GOOGLE_PROTOBUF_ATOMICOPS_ERROR
#include <google/protobuf/stubs/atomicops_internals_mips_gcc.h>
#elif defined(__native_client__)
#include <google/protobuf/stubs/atomicops_internals_pnacl.h>
-#elif (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4))
+#elif (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4)) || \
+ (defined(__clang__) && __has_extension(c_atomic))
#include <google/protobuf/stubs/atomicops_internals_generic_gcc.h>
#else
GOOGLE_PROTOBUF_ATOMICOPS_ERROR
diff --git a/src/google/protobuf/stubs/platform_macros.h b/src/google/protobuf/stubs/platform_macros.h
index 4cc46df4..02c79a61 100644
--- a/src/google/protobuf/stubs/platform_macros.h
+++ b/src/google/protobuf/stubs/platform_macros.h
@@ -63,7 +63,8 @@
#elif defined(__pnacl__)
#define GOOGLE_PROTOBUF_ARCH_32_BIT 1
#elif defined(__GNUC__) && \
- (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4))
+ ((((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4)) || \
+ (defined(__clang__) && __has_extension(c_atomic)))
// We fallback to the generic GCC >= 4.7 implementation in atomicops.h
# if __LP64__
# define GOOGLE_PROTOBUF_ARCH_64_BIT 1