1586efd52SLouis Dionne //===----------------------------------------------------------------------===//
2586efd52SLouis Dionne //
3586efd52SLouis Dionne // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4586efd52SLouis Dionne // See https://llvm.org/LICENSE.txt for license information.
5586efd52SLouis Dionne // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6586efd52SLouis Dionne //
7586efd52SLouis Dionne //===----------------------------------------------------------------------===//
8586efd52SLouis Dionne //
9586efd52SLouis Dionne // WARNING: This test was generated by generate_feature_test_macro_components.py
10586efd52SLouis Dionne // and should not be edited manually.
11586efd52SLouis Dionne //
12586efd52SLouis Dionne // clang-format off
13586efd52SLouis Dionne 
14a7f9895cSLouis Dionne // UNSUPPORTED: no-threads
15586efd52SLouis Dionne 
16586efd52SLouis Dionne // <stdatomic.h>
17586efd52SLouis Dionne 
18586efd52SLouis Dionne // Test the feature test macros defined by <stdatomic.h>
19586efd52SLouis Dionne 
20586efd52SLouis Dionne /*  Constant                 Value
2171400505SMark de Wever     __cpp_lib_stdatomic_h    202011L [C++23]
22586efd52SLouis Dionne */
23586efd52SLouis Dionne 
24586efd52SLouis Dionne #include <stdatomic.h>
25586efd52SLouis Dionne #include "test_macros.h"
26586efd52SLouis Dionne 
27586efd52SLouis Dionne #if TEST_STD_VER < 14
28586efd52SLouis Dionne 
29586efd52SLouis Dionne # ifdef __cpp_lib_stdatomic_h
3071400505SMark de Wever #   error "__cpp_lib_stdatomic_h should not be defined before c++23"
31586efd52SLouis Dionne # endif
32586efd52SLouis Dionne 
33586efd52SLouis Dionne #elif TEST_STD_VER == 14
34586efd52SLouis Dionne 
35586efd52SLouis Dionne # ifdef __cpp_lib_stdatomic_h
3671400505SMark de Wever #   error "__cpp_lib_stdatomic_h should not be defined before c++23"
37586efd52SLouis Dionne # endif
38586efd52SLouis Dionne 
39586efd52SLouis Dionne #elif TEST_STD_VER == 17
40586efd52SLouis Dionne 
41586efd52SLouis Dionne # ifdef __cpp_lib_stdatomic_h
4271400505SMark de Wever #   error "__cpp_lib_stdatomic_h should not be defined before c++23"
43586efd52SLouis Dionne # endif
44586efd52SLouis Dionne 
45586efd52SLouis Dionne #elif TEST_STD_VER == 20
46586efd52SLouis Dionne 
47586efd52SLouis Dionne # ifdef __cpp_lib_stdatomic_h
4871400505SMark de Wever #   error "__cpp_lib_stdatomic_h should not be defined before c++23"
49586efd52SLouis Dionne # endif
50586efd52SLouis Dionne 
51*00c97cbcSMark de Wever #elif TEST_STD_VER == 23
52586efd52SLouis Dionne 
53586efd52SLouis Dionne # ifndef __cpp_lib_stdatomic_h
5471400505SMark de Wever #   error "__cpp_lib_stdatomic_h should be defined in c++23"
55586efd52SLouis Dionne # endif
56586efd52SLouis Dionne # if __cpp_lib_stdatomic_h != 202011L
5771400505SMark de Wever #   error "__cpp_lib_stdatomic_h should have the value 202011L in c++23"
58586efd52SLouis Dionne # endif
59586efd52SLouis Dionne 
60*00c97cbcSMark de Wever #elif TEST_STD_VER > 23
61*00c97cbcSMark de Wever 
62*00c97cbcSMark de Wever # ifndef __cpp_lib_stdatomic_h
63*00c97cbcSMark de Wever #   error "__cpp_lib_stdatomic_h should be defined in c++26"
64*00c97cbcSMark de Wever # endif
65*00c97cbcSMark de Wever # if __cpp_lib_stdatomic_h != 202011L
66*00c97cbcSMark de Wever #   error "__cpp_lib_stdatomic_h should have the value 202011L in c++26"
67*00c97cbcSMark de Wever # endif
68*00c97cbcSMark de Wever 
69*00c97cbcSMark de Wever #endif // TEST_STD_VER > 23
70586efd52SLouis Dionne 
71