From 0ee9c843d86b7ce96336e21f8bf0193afeaeeea9 Mon Sep 17 00:00:00 2001 From: Marek Polacek Date: Thu, 14 Aug 2014 18:56:10 +0000 Subject: [PATCH] DR 458 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 | 6 +++++ gcc/ginclude/stdatomic.h | 34 ++++++++------------------ gcc/testsuite/ChangeLog | 5 ++++ gcc/testsuite/gcc.dg/c11-stdatomic-2.c | 27 ++++++++++++++++++++ 4 files changed, 48 insertions(+), 24 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/c11-stdatomic-2.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 35d7a4a6c932..8f731ca5d8fa 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2014-08-14 Marek Polacek + + 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 * emit-rtl.h (mem_attrs_eq_p): Remove duplicate declaration. diff --git a/gcc/ginclude/stdatomic.h b/gcc/ginclude/stdatomic.h index 108259b4eaba..26b4b6e53de9 100644 --- a/gcc/ginclude/stdatomic.h +++ b/gcc/ginclude/stdatomic.h @@ -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 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b879b3a60dc2..bc879c176a9b 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2014-08-14 Marek Polacek + + DR 458 + * gcc.dg/c11-stdatomic-2.c: New test. + 2014-08-14 Thomas Koenig 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 index 000000000000..d746b5ce48f9 --- /dev/null +++ b/gcc/testsuite/gcc.dg/c11-stdatomic-2.c @@ -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 + +#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 -- 2.47.3