diff options
author | Ivan Maidanski <ivmai@mail.ru> | 2012-03-07 07:41:23 +0400 |
---|---|---|
committer | Ivan Maidanski <ivmai@mail.ru> | 2012-03-07 19:36:59 +0400 |
commit | 07bc4d0ab7cdaa1ce73a32437bc6bc6e41c57dcb (patch) | |
tree | b44f351d28a5b935c3facc3b45509f5ffd3256df /src | |
parent | 97b97ed51d7cd5aba51164f8691c4840e7506a15 (diff) | |
download | libatomic_ops-07bc4d0ab7cdaa1ce73a32437bc6bc6e41c57dcb.tar.gz |
Fix AO_stack_push_release to workaround bug in clang-1.1/x86
* src/atomic_ops_stack.c (AO_stack_push_release): Make "cptr" local
variable volatile to workaround a bug in clang-1.1/x86 compiler; add
comment.
Diffstat (limited to 'src')
-rw-r--r-- | src/atomic_ops_stack.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/atomic_ops_stack.c b/src/atomic_ops_stack.c index 2f03145..dd29848 100644 --- a/src/atomic_ops_stack.c +++ b/src/atomic_ops_stack.c @@ -242,7 +242,13 @@ void AO_stack_push_release(AO_stack_t *list, AO_t *element) AO_t *AO_stack_pop_acquire(AO_stack_t *list) { - AO_t *cptr; +# ifdef __clang__ + AO_t *volatile cptr; + /* Use volatile to workaround a bug in */ + /* clang-1.1/x86 causing test_stack failure. */ +# else + AO_t *cptr; +# endif AO_t next; AO_t cversion; |