/* corresponding compare_and_swap variants to minimize adding barriers. */
#if defined(AO_HAVE_char_compare_and_swap_full) \
&& !defined(AO_HAVE_char_fetch_and_add_full)
+ AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE unsigned/**/char
AO_char_fetch_and_add_full(volatile unsigned/**/char *addr, unsigned/**/char incr)
- AO_ATTR_NO_SANITIZE_THREAD
{
unsigned/**/char old;
#if defined(AO_HAVE_char_compare_and_swap_acquire) \
&& !defined(AO_HAVE_char_fetch_and_add_acquire)
+ AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE unsigned/**/char
AO_char_fetch_and_add_acquire(volatile unsigned/**/char *addr, unsigned/**/char incr)
- AO_ATTR_NO_SANITIZE_THREAD
{
unsigned/**/char old;
#if defined(AO_HAVE_char_compare_and_swap_release) \
&& !defined(AO_HAVE_char_fetch_and_add_release)
+ AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE unsigned/**/char
AO_char_fetch_and_add_release(volatile unsigned/**/char *addr, unsigned/**/char incr)
- AO_ATTR_NO_SANITIZE_THREAD
{
unsigned/**/char old;
#if defined(AO_HAVE_char_compare_and_swap) \
&& !defined(AO_HAVE_char_fetch_and_add)
+ AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE unsigned/**/char
AO_char_fetch_and_add(volatile unsigned/**/char *addr, unsigned/**/char incr)
- AO_ATTR_NO_SANITIZE_THREAD
{
unsigned/**/char old;
/* char_and */
#if defined(AO_HAVE_char_compare_and_swap_full) \
&& !defined(AO_HAVE_char_and_full)
+ AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE void
AO_char_and_full(volatile unsigned/**/char *addr, unsigned/**/char value)
- AO_ATTR_NO_SANITIZE_THREAD
{
unsigned/**/char old;
/* char_or */
#if defined(AO_HAVE_char_compare_and_swap_full) \
&& !defined(AO_HAVE_char_or_full)
+ AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE void
AO_char_or_full(volatile unsigned/**/char *addr, unsigned/**/char value)
- AO_ATTR_NO_SANITIZE_THREAD
{
unsigned/**/char old;
/* char_xor */
#if defined(AO_HAVE_char_compare_and_swap_full) \
&& !defined(AO_HAVE_char_xor_full)
+ AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE void
AO_char_xor_full(volatile unsigned/**/char *addr, unsigned/**/char value)
- AO_ATTR_NO_SANITIZE_THREAD
{
unsigned/**/char old;
/* corresponding compare_and_swap variants to minimize adding barriers. */
#if defined(AO_HAVE_short_compare_and_swap_full) \
&& !defined(AO_HAVE_short_fetch_and_add_full)
+ AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE unsigned/**/short
AO_short_fetch_and_add_full(volatile unsigned/**/short *addr, unsigned/**/short incr)
- AO_ATTR_NO_SANITIZE_THREAD
{
unsigned/**/short old;
#if defined(AO_HAVE_short_compare_and_swap_acquire) \
&& !defined(AO_HAVE_short_fetch_and_add_acquire)
+ AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE unsigned/**/short
AO_short_fetch_and_add_acquire(volatile unsigned/**/short *addr, unsigned/**/short incr)
- AO_ATTR_NO_SANITIZE_THREAD
{
unsigned/**/short old;
#if defined(AO_HAVE_short_compare_and_swap_release) \
&& !defined(AO_HAVE_short_fetch_and_add_release)
+ AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE unsigned/**/short
AO_short_fetch_and_add_release(volatile unsigned/**/short *addr, unsigned/**/short incr)
- AO_ATTR_NO_SANITIZE_THREAD
{
unsigned/**/short old;
#if defined(AO_HAVE_short_compare_and_swap) \
&& !defined(AO_HAVE_short_fetch_and_add)
+ AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE unsigned/**/short
AO_short_fetch_and_add(volatile unsigned/**/short *addr, unsigned/**/short incr)
- AO_ATTR_NO_SANITIZE_THREAD
{
unsigned/**/short old;
/* short_and */
#if defined(AO_HAVE_short_compare_and_swap_full) \
&& !defined(AO_HAVE_short_and_full)
+ AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE void
AO_short_and_full(volatile unsigned/**/short *addr, unsigned/**/short value)
- AO_ATTR_NO_SANITIZE_THREAD
{
unsigned/**/short old;
/* short_or */
#if defined(AO_HAVE_short_compare_and_swap_full) \
&& !defined(AO_HAVE_short_or_full)
+ AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE void
AO_short_or_full(volatile unsigned/**/short *addr, unsigned/**/short value)
- AO_ATTR_NO_SANITIZE_THREAD
{
unsigned/**/short old;
/* short_xor */
#if defined(AO_HAVE_short_compare_and_swap_full) \
&& !defined(AO_HAVE_short_xor_full)
+ AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE void
AO_short_xor_full(volatile unsigned/**/short *addr, unsigned/**/short value)
- AO_ATTR_NO_SANITIZE_THREAD
{
unsigned/**/short old;
/* corresponding compare_and_swap variants to minimize adding barriers. */
#if defined(AO_HAVE_int_compare_and_swap_full) \
&& !defined(AO_HAVE_int_fetch_and_add_full)
+ AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE unsigned
AO_int_fetch_and_add_full(volatile unsigned *addr, unsigned incr)
- AO_ATTR_NO_SANITIZE_THREAD
{
unsigned old;
#if defined(AO_HAVE_int_compare_and_swap_acquire) \
&& !defined(AO_HAVE_int_fetch_and_add_acquire)
+ AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE unsigned
AO_int_fetch_and_add_acquire(volatile unsigned *addr, unsigned incr)
- AO_ATTR_NO_SANITIZE_THREAD
{
unsigned old;
#if defined(AO_HAVE_int_compare_and_swap_release) \
&& !defined(AO_HAVE_int_fetch_and_add_release)
+ AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE unsigned
AO_int_fetch_and_add_release(volatile unsigned *addr, unsigned incr)
- AO_ATTR_NO_SANITIZE_THREAD
{
unsigned old;
#if defined(AO_HAVE_int_compare_and_swap) \
&& !defined(AO_HAVE_int_fetch_and_add)
+ AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE unsigned
AO_int_fetch_and_add(volatile unsigned *addr, unsigned incr)
- AO_ATTR_NO_SANITIZE_THREAD
{
unsigned old;
/* int_and */
#if defined(AO_HAVE_int_compare_and_swap_full) \
&& !defined(AO_HAVE_int_and_full)
+ AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE void
AO_int_and_full(volatile unsigned *addr, unsigned value)
- AO_ATTR_NO_SANITIZE_THREAD
{
unsigned old;
/* int_or */
#if defined(AO_HAVE_int_compare_and_swap_full) \
&& !defined(AO_HAVE_int_or_full)
+ AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE void
AO_int_or_full(volatile unsigned *addr, unsigned value)
- AO_ATTR_NO_SANITIZE_THREAD
{
unsigned old;
/* int_xor */
#if defined(AO_HAVE_int_compare_and_swap_full) \
&& !defined(AO_HAVE_int_xor_full)
+ AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE void
AO_int_xor_full(volatile unsigned *addr, unsigned value)
- AO_ATTR_NO_SANITIZE_THREAD
{
unsigned old;
/* corresponding compare_and_swap variants to minimize adding barriers. */
#if defined(AO_HAVE_compare_and_swap_full) \
&& !defined(AO_HAVE_fetch_and_add_full)
+ AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE AO_t
AO_fetch_and_add_full(volatile AO_t *addr, AO_t incr)
- AO_ATTR_NO_SANITIZE_THREAD
{
AO_t old;
#if defined(AO_HAVE_compare_and_swap_acquire) \
&& !defined(AO_HAVE_fetch_and_add_acquire)
+ AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE AO_t
AO_fetch_and_add_acquire(volatile AO_t *addr, AO_t incr)
- AO_ATTR_NO_SANITIZE_THREAD
{
AO_t old;
#if defined(AO_HAVE_compare_and_swap_release) \
&& !defined(AO_HAVE_fetch_and_add_release)
+ AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE AO_t
AO_fetch_and_add_release(volatile AO_t *addr, AO_t incr)
- AO_ATTR_NO_SANITIZE_THREAD
{
AO_t old;
#if defined(AO_HAVE_compare_and_swap) \
&& !defined(AO_HAVE_fetch_and_add)
+ AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE AO_t
AO_fetch_and_add(volatile AO_t *addr, AO_t incr)
- AO_ATTR_NO_SANITIZE_THREAD
{
AO_t old;
/* and */
#if defined(AO_HAVE_compare_and_swap_full) \
&& !defined(AO_HAVE_and_full)
+ AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE void
AO_and_full(volatile AO_t *addr, AO_t value)
- AO_ATTR_NO_SANITIZE_THREAD
{
AO_t old;
/* or */
#if defined(AO_HAVE_compare_and_swap_full) \
&& !defined(AO_HAVE_or_full)
+ AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE void
AO_or_full(volatile AO_t *addr, AO_t value)
- AO_ATTR_NO_SANITIZE_THREAD
{
AO_t old;
/* xor */
#if defined(AO_HAVE_compare_and_swap_full) \
&& !defined(AO_HAVE_xor_full)
+ AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE void
AO_xor_full(volatile AO_t *addr, AO_t value)
- AO_ATTR_NO_SANITIZE_THREAD
{
AO_t old;
/* corresponding compare_and_swap variants to minimize adding barriers. */
#if defined(AO_HAVE_XSIZE_compare_and_swap_full) \
&& !defined(AO_HAVE_XSIZE_fetch_and_add_full)
+ AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE XCTYPE
AO_XSIZE_fetch_and_add_full(volatile XCTYPE *addr, XCTYPE incr)
- AO_ATTR_NO_SANITIZE_THREAD
{
XCTYPE old;
#if defined(AO_HAVE_XSIZE_compare_and_swap_acquire) \
&& !defined(AO_HAVE_XSIZE_fetch_and_add_acquire)
+ AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE XCTYPE
AO_XSIZE_fetch_and_add_acquire(volatile XCTYPE *addr, XCTYPE incr)
- AO_ATTR_NO_SANITIZE_THREAD
{
XCTYPE old;
#if defined(AO_HAVE_XSIZE_compare_and_swap_release) \
&& !defined(AO_HAVE_XSIZE_fetch_and_add_release)
+ AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE XCTYPE
AO_XSIZE_fetch_and_add_release(volatile XCTYPE *addr, XCTYPE incr)
- AO_ATTR_NO_SANITIZE_THREAD
{
XCTYPE old;
#if defined(AO_HAVE_XSIZE_compare_and_swap) \
&& !defined(AO_HAVE_XSIZE_fetch_and_add)
+ AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE XCTYPE
AO_XSIZE_fetch_and_add(volatile XCTYPE *addr, XCTYPE incr)
- AO_ATTR_NO_SANITIZE_THREAD
{
XCTYPE old;
/* XSIZE_and */
#if defined(AO_HAVE_XSIZE_compare_and_swap_full) \
&& !defined(AO_HAVE_XSIZE_and_full)
+ AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE void
AO_XSIZE_and_full(volatile XCTYPE *addr, XCTYPE value)
- AO_ATTR_NO_SANITIZE_THREAD
{
XCTYPE old;
/* XSIZE_or */
#if defined(AO_HAVE_XSIZE_compare_and_swap_full) \
&& !defined(AO_HAVE_XSIZE_or_full)
+ AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE void
AO_XSIZE_or_full(volatile XCTYPE *addr, XCTYPE value)
- AO_ATTR_NO_SANITIZE_THREAD
{
XCTYPE old;
/* XSIZE_xor */
#if defined(AO_HAVE_XSIZE_compare_and_swap_full) \
&& !defined(AO_HAVE_XSIZE_xor_full)
+ AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE void
AO_XSIZE_xor_full(volatile XCTYPE *addr, XCTYPE value)
- AO_ATTR_NO_SANITIZE_THREAD
{
XCTYPE old;
#if defined(AO_HAVE_char_compare_and_swap_read) \
&& !defined(AO_HAVE_char_load_read)
# define AO_char_CAS_BASED_LOAD_READ
+ AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE unsigned/**/char
- AO_char_load_read(const volatile unsigned/**/char *addr) AO_ATTR_NO_SANITIZE_THREAD
+ AO_char_load_read(const volatile unsigned/**/char *addr)
{
unsigned/**/char result;
#if defined(AO_HAVE_char_compare_and_swap_full) \
&& !defined(AO_HAVE_char_load_full)
+ AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE unsigned/**/char
- AO_char_load_full(const volatile unsigned/**/char *addr) AO_ATTR_NO_SANITIZE_THREAD
+ AO_char_load_full(const volatile unsigned/**/char *addr)
{
unsigned/**/char result;
#if defined(AO_HAVE_char_compare_and_swap_acquire) \
&& !defined(AO_HAVE_char_load_acquire)
+ AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE unsigned/**/char
AO_char_load_acquire(const volatile unsigned/**/char *addr)
- AO_ATTR_NO_SANITIZE_THREAD
{
unsigned/**/char result;
#endif
#if defined(AO_HAVE_char_compare_and_swap) && !defined(AO_HAVE_char_load)
+ AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE unsigned/**/char
- AO_char_load(const volatile unsigned/**/char *addr) AO_ATTR_NO_SANITIZE_THREAD
+ AO_char_load(const volatile unsigned/**/char *addr)
{
unsigned/**/char result;
#if defined(AO_HAVE_char_compare_and_swap_write) \
&& !defined(AO_HAVE_char_store_write)
+ AO_ATTR_NO_SANITIZE_MEMORY AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE void
AO_char_store_write(volatile unsigned/**/char *addr, unsigned/**/char new_val)
- AO_ATTR_NO_SANITIZE_MEMORY AO_ATTR_NO_SANITIZE_THREAD
{
unsigned/**/char old_val;
#endif
#if defined(AO_HAVE_char_compare_and_swap) && !defined(AO_HAVE_char_store)
+ AO_ATTR_NO_SANITIZE_MEMORY AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE void
AO_char_store(volatile unsigned/**/char *addr, unsigned/**/char new_val)
- AO_ATTR_NO_SANITIZE_MEMORY AO_ATTR_NO_SANITIZE_THREAD
{
unsigned/**/char old_val;
#if defined(AO_HAVE_char_compare_and_swap_release) \
&& !defined(AO_HAVE_char_store_release)
+ AO_ATTR_NO_SANITIZE_MEMORY AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE void
AO_char_store_release(volatile unsigned/**/char *addr, unsigned/**/char new_val)
- AO_ATTR_NO_SANITIZE_MEMORY AO_ATTR_NO_SANITIZE_THREAD
{
unsigned/**/char old_val;
#if defined(AO_HAVE_char_compare_and_swap_full) \
&& !defined(AO_HAVE_char_store_full)
+ AO_ATTR_NO_SANITIZE_MEMORY AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE void
AO_char_store_full(volatile unsigned/**/char *addr, unsigned/**/char new_val)
- AO_ATTR_NO_SANITIZE_MEMORY AO_ATTR_NO_SANITIZE_THREAD
{
unsigned/**/char old_val;
#if defined(AO_HAVE_short_compare_and_swap_read) \
&& !defined(AO_HAVE_short_load_read)
# define AO_short_CAS_BASED_LOAD_READ
+ AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE unsigned/**/short
- AO_short_load_read(const volatile unsigned/**/short *addr) AO_ATTR_NO_SANITIZE_THREAD
+ AO_short_load_read(const volatile unsigned/**/short *addr)
{
unsigned/**/short result;
#if defined(AO_HAVE_short_compare_and_swap_full) \
&& !defined(AO_HAVE_short_load_full)
+ AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE unsigned/**/short
- AO_short_load_full(const volatile unsigned/**/short *addr) AO_ATTR_NO_SANITIZE_THREAD
+ AO_short_load_full(const volatile unsigned/**/short *addr)
{
unsigned/**/short result;
#if defined(AO_HAVE_short_compare_and_swap_acquire) \
&& !defined(AO_HAVE_short_load_acquire)
+ AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE unsigned/**/short
AO_short_load_acquire(const volatile unsigned/**/short *addr)
- AO_ATTR_NO_SANITIZE_THREAD
{
unsigned/**/short result;
#endif
#if defined(AO_HAVE_short_compare_and_swap) && !defined(AO_HAVE_short_load)
+ AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE unsigned/**/short
- AO_short_load(const volatile unsigned/**/short *addr) AO_ATTR_NO_SANITIZE_THREAD
+ AO_short_load(const volatile unsigned/**/short *addr)
{
unsigned/**/short result;
#if defined(AO_HAVE_short_compare_and_swap_write) \
&& !defined(AO_HAVE_short_store_write)
+ AO_ATTR_NO_SANITIZE_MEMORY AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE void
AO_short_store_write(volatile unsigned/**/short *addr, unsigned/**/short new_val)
- AO_ATTR_NO_SANITIZE_MEMORY AO_ATTR_NO_SANITIZE_THREAD
{
unsigned/**/short old_val;
#endif
#if defined(AO_HAVE_short_compare_and_swap) && !defined(AO_HAVE_short_store)
+ AO_ATTR_NO_SANITIZE_MEMORY AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE void
AO_short_store(volatile unsigned/**/short *addr, unsigned/**/short new_val)
- AO_ATTR_NO_SANITIZE_MEMORY AO_ATTR_NO_SANITIZE_THREAD
{
unsigned/**/short old_val;
#if defined(AO_HAVE_short_compare_and_swap_release) \
&& !defined(AO_HAVE_short_store_release)
+ AO_ATTR_NO_SANITIZE_MEMORY AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE void
AO_short_store_release(volatile unsigned/**/short *addr, unsigned/**/short new_val)
- AO_ATTR_NO_SANITIZE_MEMORY AO_ATTR_NO_SANITIZE_THREAD
{
unsigned/**/short old_val;
#if defined(AO_HAVE_short_compare_and_swap_full) \
&& !defined(AO_HAVE_short_store_full)
+ AO_ATTR_NO_SANITIZE_MEMORY AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE void
AO_short_store_full(volatile unsigned/**/short *addr, unsigned/**/short new_val)
- AO_ATTR_NO_SANITIZE_MEMORY AO_ATTR_NO_SANITIZE_THREAD
{
unsigned/**/short old_val;
#if defined(AO_HAVE_int_compare_and_swap_read) \
&& !defined(AO_HAVE_int_load_read)
# define AO_int_CAS_BASED_LOAD_READ
+ AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE unsigned
- AO_int_load_read(const volatile unsigned *addr) AO_ATTR_NO_SANITIZE_THREAD
+ AO_int_load_read(const volatile unsigned *addr)
{
unsigned result;
#if defined(AO_HAVE_int_compare_and_swap_full) \
&& !defined(AO_HAVE_int_load_full)
+ AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE unsigned
- AO_int_load_full(const volatile unsigned *addr) AO_ATTR_NO_SANITIZE_THREAD
+ AO_int_load_full(const volatile unsigned *addr)
{
unsigned result;
#if defined(AO_HAVE_int_compare_and_swap_acquire) \
&& !defined(AO_HAVE_int_load_acquire)
+ AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE unsigned
AO_int_load_acquire(const volatile unsigned *addr)
- AO_ATTR_NO_SANITIZE_THREAD
{
unsigned result;
#endif
#if defined(AO_HAVE_int_compare_and_swap) && !defined(AO_HAVE_int_load)
+ AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE unsigned
- AO_int_load(const volatile unsigned *addr) AO_ATTR_NO_SANITIZE_THREAD
+ AO_int_load(const volatile unsigned *addr)
{
unsigned result;
#if defined(AO_HAVE_int_compare_and_swap_write) \
&& !defined(AO_HAVE_int_store_write)
+ AO_ATTR_NO_SANITIZE_MEMORY AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE void
AO_int_store_write(volatile unsigned *addr, unsigned new_val)
- AO_ATTR_NO_SANITIZE_MEMORY AO_ATTR_NO_SANITIZE_THREAD
{
unsigned old_val;
#endif
#if defined(AO_HAVE_int_compare_and_swap) && !defined(AO_HAVE_int_store)
+ AO_ATTR_NO_SANITIZE_MEMORY AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE void
AO_int_store(volatile unsigned *addr, unsigned new_val)
- AO_ATTR_NO_SANITIZE_MEMORY AO_ATTR_NO_SANITIZE_THREAD
{
unsigned old_val;
#if defined(AO_HAVE_int_compare_and_swap_release) \
&& !defined(AO_HAVE_int_store_release)
+ AO_ATTR_NO_SANITIZE_MEMORY AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE void
AO_int_store_release(volatile unsigned *addr, unsigned new_val)
- AO_ATTR_NO_SANITIZE_MEMORY AO_ATTR_NO_SANITIZE_THREAD
{
unsigned old_val;
#if defined(AO_HAVE_int_compare_and_swap_full) \
&& !defined(AO_HAVE_int_store_full)
+ AO_ATTR_NO_SANITIZE_MEMORY AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE void
AO_int_store_full(volatile unsigned *addr, unsigned new_val)
- AO_ATTR_NO_SANITIZE_MEMORY AO_ATTR_NO_SANITIZE_THREAD
{
unsigned old_val;
#if defined(AO_HAVE_compare_and_swap_read) \
&& !defined(AO_HAVE_load_read)
# define AO_CAS_BASED_LOAD_READ
+ AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE AO_t
- AO_load_read(const volatile AO_t *addr) AO_ATTR_NO_SANITIZE_THREAD
+ AO_load_read(const volatile AO_t *addr)
{
AO_t result;
#if defined(AO_HAVE_compare_and_swap_full) \
&& !defined(AO_HAVE_load_full)
+ AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE AO_t
- AO_load_full(const volatile AO_t *addr) AO_ATTR_NO_SANITIZE_THREAD
+ AO_load_full(const volatile AO_t *addr)
{
AO_t result;
#if defined(AO_HAVE_compare_and_swap_acquire) \
&& !defined(AO_HAVE_load_acquire)
+ AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE AO_t
AO_load_acquire(const volatile AO_t *addr)
- AO_ATTR_NO_SANITIZE_THREAD
{
AO_t result;
#endif
#if defined(AO_HAVE_compare_and_swap) && !defined(AO_HAVE_load)
+ AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE AO_t
- AO_load(const volatile AO_t *addr) AO_ATTR_NO_SANITIZE_THREAD
+ AO_load(const volatile AO_t *addr)
{
AO_t result;
#if defined(AO_HAVE_compare_and_swap_write) \
&& !defined(AO_HAVE_store_write)
+ AO_ATTR_NO_SANITIZE_MEMORY AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE void
AO_store_write(volatile AO_t *addr, AO_t new_val)
- AO_ATTR_NO_SANITIZE_MEMORY AO_ATTR_NO_SANITIZE_THREAD
{
AO_t old_val;
#endif
#if defined(AO_HAVE_compare_and_swap) && !defined(AO_HAVE_store)
+ AO_ATTR_NO_SANITIZE_MEMORY AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE void
AO_store(volatile AO_t *addr, AO_t new_val)
- AO_ATTR_NO_SANITIZE_MEMORY AO_ATTR_NO_SANITIZE_THREAD
{
AO_t old_val;
#if defined(AO_HAVE_compare_and_swap_release) \
&& !defined(AO_HAVE_store_release)
+ AO_ATTR_NO_SANITIZE_MEMORY AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE void
AO_store_release(volatile AO_t *addr, AO_t new_val)
- AO_ATTR_NO_SANITIZE_MEMORY AO_ATTR_NO_SANITIZE_THREAD
{
AO_t old_val;
#if defined(AO_HAVE_compare_and_swap_full) \
&& !defined(AO_HAVE_store_full)
+ AO_ATTR_NO_SANITIZE_MEMORY AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE void
AO_store_full(volatile AO_t *addr, AO_t new_val)
- AO_ATTR_NO_SANITIZE_MEMORY AO_ATTR_NO_SANITIZE_THREAD
{
AO_t old_val;
#if defined(AO_HAVE_double_compare_and_swap_read) \
&& !defined(AO_HAVE_double_load_read)
# define AO_double_CAS_BASED_LOAD_READ
+ AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE AO_double_t
- AO_double_load_read(const volatile AO_double_t *addr) AO_ATTR_NO_SANITIZE_THREAD
+ AO_double_load_read(const volatile AO_double_t *addr)
{
AO_double_t result;
#if defined(AO_HAVE_double_compare_and_swap_full) \
&& !defined(AO_HAVE_double_load_full)
+ AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE AO_double_t
- AO_double_load_full(const volatile AO_double_t *addr) AO_ATTR_NO_SANITIZE_THREAD
+ AO_double_load_full(const volatile AO_double_t *addr)
{
AO_double_t result;
#if defined(AO_HAVE_double_compare_and_swap_acquire) \
&& !defined(AO_HAVE_double_load_acquire)
+ AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE AO_double_t
AO_double_load_acquire(const volatile AO_double_t *addr)
- AO_ATTR_NO_SANITIZE_THREAD
{
AO_double_t result;
#endif
#if defined(AO_HAVE_double_compare_and_swap) && !defined(AO_HAVE_double_load)
+ AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE AO_double_t
- AO_double_load(const volatile AO_double_t *addr) AO_ATTR_NO_SANITIZE_THREAD
+ AO_double_load(const volatile AO_double_t *addr)
{
AO_double_t result;
#if defined(AO_HAVE_double_compare_and_swap_write) \
&& !defined(AO_HAVE_double_store_write)
+ AO_ATTR_NO_SANITIZE_MEMORY AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE void
AO_double_store_write(volatile AO_double_t *addr, AO_double_t new_val)
- AO_ATTR_NO_SANITIZE_MEMORY AO_ATTR_NO_SANITIZE_THREAD
{
AO_double_t old_val;
#endif
#if defined(AO_HAVE_double_compare_and_swap) && !defined(AO_HAVE_double_store)
+ AO_ATTR_NO_SANITIZE_MEMORY AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE void
AO_double_store(volatile AO_double_t *addr, AO_double_t new_val)
- AO_ATTR_NO_SANITIZE_MEMORY AO_ATTR_NO_SANITIZE_THREAD
{
AO_double_t old_val;
#if defined(AO_HAVE_double_compare_and_swap_release) \
&& !defined(AO_HAVE_double_store_release)
+ AO_ATTR_NO_SANITIZE_MEMORY AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE void
AO_double_store_release(volatile AO_double_t *addr, AO_double_t new_val)
- AO_ATTR_NO_SANITIZE_MEMORY AO_ATTR_NO_SANITIZE_THREAD
{
AO_double_t old_val;
#if defined(AO_HAVE_double_compare_and_swap_full) \
&& !defined(AO_HAVE_double_store_full)
+ AO_ATTR_NO_SANITIZE_MEMORY AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE void
AO_double_store_full(volatile AO_double_t *addr, AO_double_t new_val)
- AO_ATTR_NO_SANITIZE_MEMORY AO_ATTR_NO_SANITIZE_THREAD
{
AO_double_t old_val;
#if defined(AO_HAVE_XSIZE_compare_and_swap_read) \
&& !defined(AO_HAVE_XSIZE_load_read)
# define AO_XSIZE_CAS_BASED_LOAD_READ
+ AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE XCTYPE
- AO_XSIZE_load_read(const volatile XCTYPE *addr) AO_ATTR_NO_SANITIZE_THREAD
+ AO_XSIZE_load_read(const volatile XCTYPE *addr)
{
XCTYPE result;
#if defined(AO_HAVE_XSIZE_compare_and_swap_full) \
&& !defined(AO_HAVE_XSIZE_load_full)
+ AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE XCTYPE
- AO_XSIZE_load_full(const volatile XCTYPE *addr) AO_ATTR_NO_SANITIZE_THREAD
+ AO_XSIZE_load_full(const volatile XCTYPE *addr)
{
XCTYPE result;
#if defined(AO_HAVE_XSIZE_compare_and_swap_acquire) \
&& !defined(AO_HAVE_XSIZE_load_acquire)
+ AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE XCTYPE
AO_XSIZE_load_acquire(const volatile XCTYPE *addr)
- AO_ATTR_NO_SANITIZE_THREAD
{
XCTYPE result;
#endif
#if defined(AO_HAVE_XSIZE_compare_and_swap) && !defined(AO_HAVE_XSIZE_load)
+ AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE XCTYPE
- AO_XSIZE_load(const volatile XCTYPE *addr) AO_ATTR_NO_SANITIZE_THREAD
+ AO_XSIZE_load(const volatile XCTYPE *addr)
{
XCTYPE result;
#if defined(AO_HAVE_XSIZE_compare_and_swap_write) \
&& !defined(AO_HAVE_XSIZE_store_write)
+ AO_ATTR_NO_SANITIZE_MEMORY AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE void
AO_XSIZE_store_write(volatile XCTYPE *addr, XCTYPE new_val)
- AO_ATTR_NO_SANITIZE_MEMORY AO_ATTR_NO_SANITIZE_THREAD
{
XCTYPE old_val;
#endif
#if defined(AO_HAVE_XSIZE_compare_and_swap) && !defined(AO_HAVE_XSIZE_store)
+ AO_ATTR_NO_SANITIZE_MEMORY AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE void
AO_XSIZE_store(volatile XCTYPE *addr, XCTYPE new_val)
- AO_ATTR_NO_SANITIZE_MEMORY AO_ATTR_NO_SANITIZE_THREAD
{
XCTYPE old_val;
#if defined(AO_HAVE_XSIZE_compare_and_swap_release) \
&& !defined(AO_HAVE_XSIZE_store_release)
+ AO_ATTR_NO_SANITIZE_MEMORY AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE void
AO_XSIZE_store_release(volatile XCTYPE *addr, XCTYPE new_val)
- AO_ATTR_NO_SANITIZE_MEMORY AO_ATTR_NO_SANITIZE_THREAD
{
XCTYPE old_val;
#if defined(AO_HAVE_XSIZE_compare_and_swap_full) \
&& !defined(AO_HAVE_XSIZE_store_full)
+ AO_ATTR_NO_SANITIZE_MEMORY AO_ATTR_NO_SANITIZE_THREAD
AO_INLINE void
AO_XSIZE_store_full(volatile XCTYPE *addr, XCTYPE new_val)
- AO_ATTR_NO_SANITIZE_MEMORY AO_ATTR_NO_SANITIZE_THREAD
{
XCTYPE old_val;
/* to be inserted. */
/* Both list headers and link fields contain "perturbed" pointers, i.e. */
/* pointers with extra bits "or"ed into the low order bits. */
-void
-AO_stack_push_explicit_aux_release(volatile AO_t *list, AO_t *x,
- AO_stack_aux *a) AO_ATTR_NO_SANITIZE_THREAD
+AO_ATTR_NO_SANITIZE_THREAD
+void AO_stack_push_explicit_aux_release(volatile AO_t *list, AO_t *x,
+ AO_stack_aux *a)
{
AO_t x_bits = (AO_t)x;
AO_t next;
volatile /* non-static */ AO_t AO_noop_sink;
#endif
+AO_ATTR_NO_SANITIZE_THREAD
void AO_stack_push_release(AO_stack_t *list, AO_t *element)
- AO_ATTR_NO_SANITIZE_THREAD
{
AO_t next;
# endif
}
-AO_t *AO_stack_pop_acquire(AO_stack_t *list) AO_ATTR_NO_SANITIZE_THREAD
+AO_ATTR_NO_SANITIZE_THREAD
+AO_t *AO_stack_pop_acquire(AO_stack_t *list)
{
# ifdef __clang__
AO_t *volatile cptr;
unsigned long locked_counter;
volatile unsigned long junk = 13;
-void do_junk(void) AO_ATTR_NO_SANITIZE_THREAD
+AO_ATTR_NO_SANITIZE_THREAD
+void do_junk(void)
{
junk *= 17;
junk *= 19;
int data;
} ln;
-ln *cons(int d, ln *tail) AO_ATTR_NO_SANITIZE_THREAD
+AO_ATTR_NO_SANITIZE_THREAD
+ln *cons(int d, ln *tail)
{
static size_t extra = 0; /* data race in extra is OK */
size_t my_extra = extra;