Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 3 May 2012 15:54:07 +0000 (UTC)
From:      David Chisnall <theraven@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r234958 - head/include
Message-ID:  <201205031554.q43Fs78Q050021@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: theraven
Date: Thu May  3 15:54:06 2012
New Revision: 234958
URL: http://svn.freebsd.org/changeset/base/234958

Log:
  Fix <stdatomic.h> after clang decided to rename all of its builtins to include
  a c11 prefix to disambiguate them from the one provided by GCC.
  
  Note: Clang 3.1 also supports the GCC builtins for libstdc++ 4.7 compatibility,
  but I don't recommend using them because they are very poorly designed.
  
  MFC after:	2 weeks

Modified:
  head/include/stdatomic.h

Modified: head/include/stdatomic.h
==============================================================================
--- head/include/stdatomic.h	Thu May  3 15:51:34 2012	(r234957)
+++ head/include/stdatomic.h	Thu May  3 15:54:06 2012	(r234958)
@@ -51,7 +51,7 @@
 
 #if defined(__CLANG_ATOMICS)
 #define	ATOMIC_VAR_INIT(value)		(value)
-#define	atomic_init(obj, value)		__atomic_init(obj, value)
+#define	atomic_init(obj, value)		__c11_atomic_init(obj, value)
 #else
 #define	ATOMIC_VAR_INIT(value)		{ .__val = (value) }
 #define	atomic_init(obj, value) do {					\
@@ -104,7 +104,10 @@ enum memory_order {
  * 7.17.4 Fences.
  */
 
-#if defined(__CLANG_ATOMICS) || defined(__GNUC_ATOMICS)
+#ifdef __CLANG_ATOMICS
+#define	atomic_thread_fence(order)	__c11_atomic_thread_fence(order)
+#define	atomic_signal_fence(order)	__c11_atomic_signal_fence(order)
+#elif defined(__GNUC_ATOMICS)
 #define	atomic_thread_fence(order)	__atomic_thread_fence(order)
 #define	atomic_signal_fence(order)	__atomic_signal_fence(order)
 #else
@@ -118,7 +121,7 @@ enum memory_order {
 
 #if defined(__CLANG_ATOMICS)
 #define	atomic_is_lock_free(obj) \
-	__atomic_is_lock_free(sizeof(obj))
+	__c11_atomic_is_lock_free(sizeof(obj))
 #elif defined(__GNUC_ATOMICS)
 #define	atomic_is_lock_free(obj) \
 	__atomic_is_lock_free(sizeof((obj)->__val))
@@ -182,28 +185,28 @@ typedef _Atomic(__uintmax_t)		atomic_uin
 #if defined(__CLANG_ATOMICS)
 #define	atomic_compare_exchange_strong_explicit(object, expected,	\
     desired, success, failure)						\
-	__atomic_compare_exchange_strong(object, expected, desired,	\
+	__c11_atomic_compare_exchange_strong(object, expected, desired,	\
 	    success, failure)
 #define	atomic_compare_exchange_weak_explicit(object, expected,		\
     desired, success, failure)						\
-	__atomic_compare_exchange_weak(object, expected, desired,	\
+	__c11_atomic_compare_exchange_weak(object, expected, desired,	\
 	    success, failure)
 #define	atomic_exchange_explicit(object, desired, order)		\
-	__atomic_exchange(object, desired, order)
+	__c11_atomic_exchange(object, desired, order)
 #define	atomic_fetch_add_explicit(object, operand, order)		\
-	__atomic_fetch_add(object, operand, order)
+	__c11_atomic_fetch_add(object, operand, order)
 #define	atomic_fetch_and_explicit(object, operand, order)		\
-	__atomic_fetch_and(object, operand, order)
+	__c11_atomic_fetch_and(object, operand, order)
 #define	atomic_fetch_or_explicit(object, operand, order)		\
-	__atomic_fetch_or(object, operand, order)
+	__c11_atomic_fetch_or(object, operand, order)
 #define	atomic_fetch_sub_explicit(object, operand, order)		\
-	__atomic_fetch_sub(object, operand, order)
+	__c11_atomic_fetch_sub(object, operand, order)
 #define	atomic_fetch_xor_explicit(object, operand, order)		\
-	__atomic_fetch_xor(object, operand, order)
+	__c11_atomic_fetch_xor(object, operand, order)
 #define	atomic_load_explicit(object, order)				\
-	__atomic_load(object, order)
+	__c11_atomic_load(object, order)
 #define	atomic_store_explicit(object, desired, order)			\
-	__atomic_store(object, desired, order)
+	__c11_atomic_store(object, desired, order)
 #elif defined(__GNUC_ATOMICS)
 #define	atomic_compare_exchange_strong_explicit(object, expected,	\
     desired, success, failure)						\



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201205031554.q43Fs78Q050021>