1cdce50bda3603770cc4ef80cbb613c78b8e47a17Pirama Arumuga Nainar/*===-- atomic_flag_clear_explicit.c ----------------------------------------===
2cdce50bda3603770cc4ef80cbb613c78b8e47a17Pirama Arumuga Nainar *
3cdce50bda3603770cc4ef80cbb613c78b8e47a17Pirama Arumuga Nainar *                     The LLVM Compiler Infrastructure
4cdce50bda3603770cc4ef80cbb613c78b8e47a17Pirama Arumuga Nainar *
5cdce50bda3603770cc4ef80cbb613c78b8e47a17Pirama Arumuga Nainar * This file is dual licensed under the MIT and the University of Illinois Open
6cdce50bda3603770cc4ef80cbb613c78b8e47a17Pirama Arumuga Nainar * Source Licenses. See LICENSE.TXT for details.
7cdce50bda3603770cc4ef80cbb613c78b8e47a17Pirama Arumuga Nainar *
8cdce50bda3603770cc4ef80cbb613c78b8e47a17Pirama Arumuga Nainar *===------------------------------------------------------------------------===
9cdce50bda3603770cc4ef80cbb613c78b8e47a17Pirama Arumuga Nainar *
10cdce50bda3603770cc4ef80cbb613c78b8e47a17Pirama Arumuga Nainar * This file implements atomic_flag_clear_explicit from C11's stdatomic.h.
11cdce50bda3603770cc4ef80cbb613c78b8e47a17Pirama Arumuga Nainar *
12cdce50bda3603770cc4ef80cbb613c78b8e47a17Pirama Arumuga Nainar *===------------------------------------------------------------------------===
13cdce50bda3603770cc4ef80cbb613c78b8e47a17Pirama Arumuga Nainar */
14cdce50bda3603770cc4ef80cbb613c78b8e47a17Pirama Arumuga Nainar
15799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar#ifndef __has_include
16799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar#define __has_include(inc) 0
17799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar#endif
18799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar
19799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar#if __has_include(<stdatomic.h>)
20799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar
21cdce50bda3603770cc4ef80cbb613c78b8e47a17Pirama Arumuga Nainar#include <stdatomic.h>
22cdce50bda3603770cc4ef80cbb613c78b8e47a17Pirama Arumuga Nainar#undef atomic_flag_clear_explicit
23cdce50bda3603770cc4ef80cbb613c78b8e47a17Pirama Arumuga Nainarvoid atomic_flag_clear_explicit(volatile atomic_flag *object,
24cdce50bda3603770cc4ef80cbb613c78b8e47a17Pirama Arumuga Nainar                                memory_order order) {
25799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar  __c11_atomic_store(&(object)->_Value, 0, order);
26cdce50bda3603770cc4ef80cbb613c78b8e47a17Pirama Arumuga Nainar}
27799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar
28799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar#endif
29