diff options
author | Paolo Carlini <paolo.carlini@oracle.com> | 2011-02-01 18:15:39 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2011-02-01 18:15:39 +0000 |
commit | 72660097ec107807e54b72a6d9e778260d90f199 (patch) | |
tree | de8e5656bb710a986e27874f2feb69d0320c9853 /libstdc++-v3 | |
parent | 04f089357e00b4840b8e5c1757f5c45275dd5af2 (diff) | |
download | gcc-72660097ec107807e54b72a6d9e778260d90f199.zip gcc-72660097ec107807e54b72a6d9e778260d90f199.tar.gz gcc-72660097ec107807e54b72a6d9e778260d90f199.tar.bz2 |
re PR libstdc++/46914 (std::atomic<int*>::exchange(...) doesn't store correct value.)
2011-02-01 Paolo Carlini <paolo.carlini@oracle.com>
PR libstdc++/46914
* include/bits/atomic_0.h (_ATOMIC_STORE_, _ATOMIC_MODIFY_,
_ATOMIC_CMPEXCHNG_): Rename __v -> __w, and __m -> __n, to
avoid name conflicts.
From-SVN: r169494
Diffstat (limited to 'libstdc++-v3')
-rw-r--r-- | libstdc++-v3/ChangeLog | 7 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/atomic_0.h | 28 |
2 files changed, 21 insertions, 14 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 9bcfa23..d6eac20 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,10 @@ +2011-02-01 Paolo Carlini <paolo.carlini@oracle.com> + + PR libstdc++/46914 + * include/bits/atomic_0.h (_ATOMIC_STORE_, _ATOMIC_MODIFY_, + _ATOMIC_CMPEXCHNG_): Rename __v -> __w, and __m -> __n, to + avoid name conflicts. + 2011-02-01 Benjamin Kosnik <bkoz@redhat.com> PR libstdc++/47560 diff --git a/libstdc++-v3/include/bits/atomic_0.h b/libstdc++-v3/include/bits/atomic_0.h index 42ff462..02fa969 100644 --- a/libstdc++-v3/include/bits/atomic_0.h +++ b/libstdc++-v3/include/bits/atomic_0.h @@ -1,6 +1,6 @@ // -*- C++ -*- header. -// Copyright (C) 2008, 2009, 2010 +// Copyright (C) 2008, 2009, 2010, 2011 // Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free @@ -68,41 +68,41 @@ namespace __atomic0 atomic_flag_clear_explicit(__g, __x); \ __r; }) -#define _ATOMIC_STORE_(__a, __m, __x) \ +#define _ATOMIC_STORE_(__a, __n, __x) \ ({typedef __typeof__(_ATOMIC_MEMBER_) __i_type; \ __i_type* __p = &_ATOMIC_MEMBER_; \ - __typeof__(__m) __v = (__m); \ + __typeof__(__n) __w = (__n); \ __atomic_flag_base* __g = __atomic_flag_for_address(__p); \ __atomic_flag_wait_explicit(__g, __x); \ - *__p = __v; \ + *__p = __w; \ atomic_flag_clear_explicit(__g, __x); \ - __v; }) + __w; }) -#define _ATOMIC_MODIFY_(__a, __o, __m, __x) \ +#define _ATOMIC_MODIFY_(__a, __o, __n, __x) \ ({typedef __typeof__(_ATOMIC_MEMBER_) __i_type; \ __i_type* __p = &_ATOMIC_MEMBER_; \ - __typeof__(__m) __v = (__m); \ + __typeof__(__n) __w = (__n); \ __atomic_flag_base* __g = __atomic_flag_for_address(__p); \ __atomic_flag_wait_explicit(__g, __x); \ __i_type __r = *__p; \ - *__p __o __v; \ + *__p __o __w; \ atomic_flag_clear_explicit(__g, __x); \ __r; }) -#define _ATOMIC_CMPEXCHNG_(__a, __e, __m, __x) \ +#define _ATOMIC_CMPEXCHNG_(__a, __e, __n, __x) \ ({typedef __typeof__(_ATOMIC_MEMBER_) __i_type; \ __i_type* __p = &_ATOMIC_MEMBER_; \ __typeof__(__e) __q = (__e); \ - __typeof__(__m) __v = (__m); \ + __typeof__(__n) __w = (__n); \ bool __r; \ __atomic_flag_base* __g = __atomic_flag_for_address(__p); \ __atomic_flag_wait_explicit(__g, __x); \ __i_type __t = *__p; \ if (*__q == __t) \ - { \ - *__p = (__i_type)__v; \ - __r = true; \ - } \ + { \ + *__p = (__i_type)__w; \ + __r = true; \ + } \ else { *__q = __t; __r = false; } \ atomic_flag_clear_explicit(__g, __x); \ __r; }) |