re PR middle-end/51038 (29_atomics/atomic_flag/clear/1.cc test_and_set/explicit.cc...
authorAndrew MacLeod <amacleod@redhat.com>
Thu, 10 Nov 2011 20:38:33 +0000 (20:38 +0000)
committerAndrew Macleod <amacleod@gcc.gnu.org>
Thu, 10 Nov 2011 20:38:33 +0000 (20:38 +0000)
commitd660c35ea2ba7c23049d3c8c2e07bf7dbcf0aed9
tree4138d94b9a849ba000843310e148fa8a6d8d6c8a
parent49fe93f41068a64691cb450cd5b9490dc81880ae
re PR middle-end/51038 (29_atomics/atomic_flag/clear/1.cc test_and_set/explicit.cc implicit.cc)

PR middle-end/51038

libstdc++-v3
* include/bits/atomic_base.h (atomic_thread_fence): Call built-in.
(atomic_signal_fence): Call built-in.
(test_and_set, clear): Call new atomic built-ins.

gcc
* builtins.c (expand_builtin_atomic_clear): New.  Expand atomic_clear.
(expand_builtin_atomic_test_and_set): New.  Expand atomic test_and_set.
(expand_builtin): Add cases for test_and_set and clear.
* sync-builtins.def (BUILT_IN_ATOMIC_TEST_AND_SET): New.
(BUILT_IN_ATOMIC_CLEAR): New.

testsuite
* gcc.dg/atomic-invalid.c: Add test for invalid __atomic_clear models.
* gcc.dg/atomic-flag.c: New.  Test __atomic_test_and_set and
__atomic_clear.

From-SVN: r181271
gcc/ChangeLog
gcc/builtins.c
gcc/sync-builtins.def
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/atomic-flag.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/atomic-invalid.c
libstdc++-v3/ChangeLog
libstdc++-v3/include/bits/atomic_base.h