From 07bc4d0ab7cdaa1ce73a32437bc6bc6e41c57dcb Mon Sep 17 00:00:00 2001 From: Ivan Maidanski Date: Wed, 7 Mar 2012 07:41:23 +0400 Subject: 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. --- src/atomic_ops_stack.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) 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; -- cgit v1.2.1