blob: 8a60f8196dab84392d471cb3da39ed04ded0e515 [file] [log] [blame]
Howard Hinnant79101ae2010-09-30 21:05:29 +00001//===----------------------------------------------------------------------===//
2//
3// The LLVM Compiler Infrastructure
4//
Howard Hinnantb64f8b02010-11-16 22:09:02 +00005// This file is dual licensed under the MIT and the University of Illinois Open
6// Source Licenses. See LICENSE.TXT for details.
Howard Hinnant79101ae2010-09-30 21:05:29 +00007//
8//===----------------------------------------------------------------------===//
Jonathan Roelofs8d86b2e2014-09-05 19:45:05 +00009//
10// UNSUPPORTED: libcpp-has-no-threads
Howard Hinnant79101ae2010-09-30 21:05:29 +000011
12// <atomic>
13
14// struct atomic_flag
15
16// void atomic_flag_clear(volatile atomic_flag*);
17// void atomic_flag_clear(atomic_flag*);
18
19#include <atomic>
20#include <cassert>
21
22int main()
23{
24 {
Dan Albert1d4a1ed2016-05-25 22:36:09 -070025 std::atomic_flag f = ATOMIC_FLAG_INIT;
Howard Hinnant79101ae2010-09-30 21:05:29 +000026 f.test_and_set();
27 atomic_flag_clear(&f);
28 assert(f.test_and_set() == 0);
29 }
30 {
Dan Albert1d4a1ed2016-05-25 22:36:09 -070031 volatile std::atomic_flag f = ATOMIC_FLAG_INIT;
Howard Hinnant79101ae2010-09-30 21:05:29 +000032 f.test_and_set();
33 atomic_flag_clear(&f);
34 assert(f.test_and_set() == 0);
35 }
36}