File indexing completed on 2026-05-03 08:13:13
0001
0002
0003
0004
0005
0006
0007
0008
0009 #ifndef _LIBCPP___ATOMIC_CHECK_MEMORY_ORDER_H
0010 #define _LIBCPP___ATOMIC_CHECK_MEMORY_ORDER_H
0011
0012 #include <__config>
0013
0014 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
0015 # pragma GCC system_header
0016 #endif
0017
0018 #define _LIBCPP_CHECK_STORE_MEMORY_ORDER(__m) \
0019 _LIBCPP_DIAGNOSE_WARNING(__m == memory_order_consume || __m == memory_order_acquire || __m == memory_order_acq_rel, \
0020 "memory order argument to atomic operation is invalid")
0021
0022 #define _LIBCPP_CHECK_LOAD_MEMORY_ORDER(__m) \
0023 _LIBCPP_DIAGNOSE_WARNING(__m == memory_order_release || __m == memory_order_acq_rel, \
0024 "memory order argument to atomic operation is invalid")
0025
0026 #define _LIBCPP_CHECK_EXCHANGE_MEMORY_ORDER(__m, __f) \
0027 _LIBCPP_DIAGNOSE_WARNING(__f == memory_order_release || __f == memory_order_acq_rel, \
0028 "memory order argument to atomic operation is invalid")
0029
0030 #define _LIBCPP_CHECK_WAIT_MEMORY_ORDER(__m) \
0031 _LIBCPP_DIAGNOSE_WARNING(__m == memory_order_release || __m == memory_order_acq_rel, \
0032 "memory order argument to atomic operation is invalid")
0033
0034 #endif