From 72660097ec107807e54b72a6d9e778260d90f199 Mon Sep 17 00:00:00 2001 From: Paolo Carlini Date: Tue, 1 Feb 2011 18:15:39 +0000 Subject: re PR libstdc++/46914 (std::atomic::exchange(...) doesn't store correct value.) 2011-02-01 Paolo Carlini 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 --- libstdc++-v3/ChangeLog | 7 +++++++ 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 + + 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 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; }) -- cgit v1.1