Minimize use of AO_ATTR_NO_SANITIZE_THREAD in atomic_ops_malloc/stack
authorIvan Maidanski <ivmai@mail.ru>
Thu, 7 Dec 2017 08:14:46 +0000 (11:14 +0300)
committerIvan Maidanski <ivmai@mail.ru>
Fri, 22 Dec 2017 15:38:43 +0000 (18:38 +0300)
commit681deba94ecf3d65b7f4bd9bda3c8a10c4b4c59b
tree6f173bcdabc75b8cb7d5e3de32d928e2446f85b4
parent165173c9761220e7d75312258b43c4c24c9f8113
Minimize use of AO_ATTR_NO_SANITIZE_THREAD in atomic_ops_malloc/stack
(Cherry-pick commits c058d9d, 110b0dc, 3aefd4e, 441415c from 'master'.)

* src/atomic_ops_malloc.c (AO_malloc, AO_free): Remove TSan workaround
(do not check AO_THREAD_SANITIZER macro).
* src/atomic_ops_stack.c (store_before_cas): New static function (or
defined as a macro).
* src/atomic_ops_stack.c [!USE_ALMOST_LOCK_FREE] (load_before_cas):
Likewiese.
* src/atomic_ops_stack.c [AO_USE_ALMOST_LOCK_FREE]
(AO_stack_push_explicit_aux_release): Remove AO_ATTR_NO_SANITIZE_THREAD.
* src/atomic_ops_stack.c [!USE_ALMOST_LOCK_FREE
&& AO_HAVE_compare_double_and_swap_double] (AO_stack_push_release,
AO_stack_pop_acquire): Likewise.
* src/atomic_ops_stack.c [AO_USE_ALMOST_LOCK_FREE
&& AO_THREAD_SANITIZER] (AO_load_next): New static function (with
AO_ATTR_NO_SANITIZE_THREAD attribute); add comments.
* src/atomic_ops_stack.c [AO_USE_ALMOST_LOCK_FREE
&& !AO_THREAD_SANITIZER] (AO_load_next): Define to AO_load.
* src/atomic_ops_stack.c [AO_USE_ALMOST_LOCK_FREE]
(AO_stack_pop_explicit_aux_acquire): Replace AO_load(first_ptr) with
AO_load_next(first_ptr).
* src/atomic_ops_stack.c [AO_USE_ALMOST_LOCK_FREE]
(AO_stack_push_explicit_aux_release): Replace *x=next with
store_before_cas(x,next).
* src/atomic_ops_stack.c [!USE_ALMOST_LOCK_FREE]
(AO_stack_push_release): Likewise.
* src/atomic_ops_stack.c [!USE_ALMOST_LOCK_FREE] (AO_stack_pop_acquire):
Replace next=*cptr with load_before_cas((AO_t*)cptr).
* src/atomic_ops_stack.c [!USE_ALMOST_LOCK_FREE
&& AO_HAVE_compare_and_swap_double] (AO_stack_pop_acquire): Reformat
code.
src/atomic_ops_malloc.c
src/atomic_ops_stack.c