]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
DR 458
authorMarek Polacek <polacek@redhat.com>
Thu, 14 Aug 2014 18:56:10 +0000 (18:56 +0000)
committerMarek Polacek <mpolacek@gcc.gnu.org>
Thu, 14 Aug 2014 18:56:10 +0000 (18:56 +0000)
DR 458
* ginclude/stdatomic.h (__atomic_type_lock_free): Remove.
(ATOMIC_*_LOCK_FREE): Map to __GCC_ATOMIC_*_LOCK_FREE.

* gcc.dg/c11-stdatomic-2.c: New test.

From-SVN: r213981

gcc/ChangeLog
gcc/ginclude/stdatomic.h
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/c11-stdatomic-2.c [new file with mode: 0644]

index 35d7a4a6c9323d7f52ae85bddf62ee1e167f9249..8f731ca5d8facd461018bdc4df3d68610528b089 100644 (file)
@@ -1,3 +1,9 @@
+2014-08-14  Marek Polacek  <polacek@redhat.com>
+
+       DR 458
+       * ginclude/stdatomic.h (__atomic_type_lock_free): Remove.
+       (ATOMIC_*_LOCK_FREE): Map to __GCC_ATOMIC_*_LOCK_FREE.
+
 2014-08-14  Tom de Vries  <tom@codesourcery.com>
 
        * emit-rtl.h (mem_attrs_eq_p): Remove duplicate declaration.
index 108259b4eaba779d19740557609bbbabfe0af242..26b4b6e53de967220d46f5cf97fd57d7cd5bcc24 100644 (file)
@@ -95,30 +95,16 @@ typedef _Atomic __UINTMAX_TYPE__ atomic_uintmax_t;
 #define atomic_signal_fence(MO)        __atomic_signal_fence  (MO)
 #define atomic_is_lock_free(OBJ) __atomic_is_lock_free (sizeof (*(OBJ)), (OBJ))
 
-#define __atomic_type_lock_free(T)                             \
-  (__atomic_always_lock_free (sizeof (T), (void *) 0)          \
-   ? 2                                                         \
-   : (__atomic_is_lock_free (sizeof (T), (void *) 0) ? 1 : 0))
-#define ATOMIC_BOOL_LOCK_FREE                  \
-  __atomic_type_lock_free (atomic_bool)
-#define ATOMIC_CHAR_LOCK_FREE                  \
-  __atomic_type_lock_free (atomic_char)
-#define ATOMIC_CHAR16_T_LOCK_FREE              \
-  __atomic_type_lock_free (atomic_char16_t)
-#define ATOMIC_CHAR32_T_LOCK_FREE              \
-  __atomic_type_lock_free (atomic_char32_t)
-#define ATOMIC_WCHAR_T_LOCK_FREE               \
-  __atomic_type_lock_free (atomic_wchar_t)
-#define ATOMIC_SHORT_LOCK_FREE                         \
-  __atomic_type_lock_free (atomic_short)
-#define ATOMIC_INT_LOCK_FREE                   \
-  __atomic_type_lock_free (atomic_int)
-#define ATOMIC_LONG_LOCK_FREE                  \
-  __atomic_type_lock_free (atomic_long)
-#define ATOMIC_LLONG_LOCK_FREE                 \
-  __atomic_type_lock_free (atomic_llong)
-#define ATOMIC_POINTER_LOCK_FREE               \
-  __atomic_type_lock_free (void * _Atomic)
+#define ATOMIC_BOOL_LOCK_FREE          __GCC_ATOMIC_BOOL_LOCK_FREE
+#define ATOMIC_CHAR_LOCK_FREE          __GCC_ATOMIC_CHAR_LOCK_FREE
+#define ATOMIC_CHAR16_T_LOCK_FREE      __GCC_ATOMIC_CHAR16_T_LOCK_FREE
+#define ATOMIC_CHAR32_T_LOCK_FREE      __GCC_ATOMIC_CHAR32_T_LOCK_FREE
+#define ATOMIC_WCHAR_T_LOCK_FREE       __GCC_ATOMIC_WCHAR_T_LOCK_FREE
+#define ATOMIC_SHORT_LOCK_FREE         __GCC_ATOMIC_SHORT_LOCK_FREE
+#define ATOMIC_INT_LOCK_FREE           __GCC_ATOMIC_INT_LOCK_FREE
+#define ATOMIC_LONG_LOCK_FREE          __GCC_ATOMIC_LONG_LOCK_FREE
+#define ATOMIC_LLONG_LOCK_FREE         __GCC_ATOMIC_LLONG_LOCK_FREE
+#define ATOMIC_POINTER_LOCK_FREE       __GCC_ATOMIC_POINTER_LOCK_FREE
 
 
 /* Note that these macros require __typeof__ and __auto_type to remove
index b879b3a60dc2208b307f8e909f2b08e2bf54432f..bc879c176a9b452a33dc3cc59c3293a53c287c15 100644 (file)
@@ -1,3 +1,8 @@
+2014-08-14  Marek Polacek  <polacek@redhat.com>
+
+       DR 458
+       * gcc.dg/c11-stdatomic-2.c: New test.
+
 2014-08-14  Thomas Koenig  <tkoenig@gcc.gnu.org>
 
        PR fortran/62106
diff --git a/gcc/testsuite/gcc.dg/c11-stdatomic-2.c b/gcc/testsuite/gcc.dg/c11-stdatomic-2.c
new file mode 100644 (file)
index 0000000..d746b5c
--- /dev/null
@@ -0,0 +1,27 @@
+/* Test stdatomic.h header contents.  Test that ATOMIC_*_LOCK_FREE
+   macros can be used in an #if directive (DR#458).  */
+/* { dg-do preprocess } */
+/* { dg-options "-std=c11 -pedantic-errors" } */
+
+#include <stdatomic.h>
+
+#if ATOMIC_BOOL_LOCK_FREE
+#endif
+#if ATOMIC_CHAR_LOCK_FREE
+#endif
+#if ATOMIC_CHAR16_T_LOCK_FREE
+#endif
+#if ATOMIC_CHAR32_T_LOCK_FREE
+#endif
+#if ATOMIC_WCHAR_T_LOCK_FREE
+#endif
+#if ATOMIC_SHORT_LOCK_FREE
+#endif
+#if ATOMIC_INT_LOCK_FREE
+#endif
+#if ATOMIC_LONG_LOCK_FREE
+#endif
+#if ATOMIC_LLONG_LOCK_FREE
+#endif
+#if ATOMIC_POINTER_LOCK_FREE
+#endif