From: Paolo Carlini Date: Tue, 1 Feb 2011 18:15:56 +0000 (+0000) Subject: re PR libstdc++/46914 (std::atomic::exchange(...) doesn't store correct value.) X-Git-Tag: releases/gcc-4.5.3~254 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4d00059f7ab7bfe506e7e206b83c358f5b1f7610;p=thirdparty%2Fgcc.git 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: r169495 --- diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 71f4b7e06aa1..49ad77af26aa 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-01-30 Gerald Pfeifer * doc/xml/manual/codecvt.xml: Fix link to The Austin Common diff --git a/libstdc++-v3/include/bits/atomic_0.h b/libstdc++-v3/include/bits/atomic_0.h index a39de4a79269..8a46f76b17f5 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 +// Copyright (C) 2008, 2009, 2010, 2011 // Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free @@ -49,34 +49,34 @@ namespace __atomic0 atomic_flag_clear_explicit(__g, __x); \ __r; }) -#define _ATOMIC_STORE_(__a, __m, __x) \ +#define _ATOMIC_STORE_(__a, __n, __x) \ ({__typeof__ _ATOMIC_MEMBER_* __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) \ ({__typeof__ _ATOMIC_MEMBER_* __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); \ __typeof__ _ATOMIC_MEMBER_ __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) \ ({__typeof__ _ATOMIC_MEMBER_* __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); \ __typeof__ _ATOMIC_MEMBER_ __t__ = *__p; \ - if (__t__ == *__q) { *__p = __v; __r = true; } \ + if (__t__ == *__q) { *__p = __w; __r = true; } \ else { *__q = __t__; __r = false; } \ atomic_flag_clear_explicit(__g, __x); \ __r; })