]> granicus.if.org Git - libatomic_ops/commitdiff
Workaround test_stack failure on AIX/ppc
authorFabrizio Fabbri <ffabbri4@bloomberg.net>
Fri, 7 Apr 2017 13:56:04 +0000 (09:56 -0400)
committerIvan Maidanski <ivmai@mail.ru>
Wed, 10 May 2017 06:02:43 +0000 (09:02 +0300)
(Cherry-pick commit 9b697e8 from 'release-7_4' branch.)

* src/atomic_ops_stack.c [AO_USE_ALMOST_LOCK_FREE]
(AO_stack_pop_explicit_aux_acquire): Replace AO_load to AO_load_acquire
when loaded value is compared to first; add comment.

src/atomic_ops_stack.c

index cf7a02e63c8cad67904d51d105dbdc0219b51594..8da49dd18728eb374c15e1a39680f657f04823ca 100644 (file)
@@ -193,7 +193,11 @@ AO_stack_pop_explicit_aux_acquire(volatile AO_t *list, AO_stack_aux * a)
   /* We need to make sure that first is still the first entry on the    */
   /* list.  Otherwise it's possible that a reinsertion of it was        */
   /* already started before we added the black list entry.              */
-  if (first != AO_load(list)) {
+  if (first != AO_load_acquire(list))
+                        /* Workaround test failure on AIX, at least, by */
+                        /* using acquire ordering semantics for this    */
+                        /* load.  Probably, it is not the right fix.    */
+  {
     AO_store_release(a->AO_stack_bl+i, 0);
     goto retry;
   }