aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2011-02-01 18:15:39 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2011-02-01 18:15:39 +0000
commit72660097ec107807e54b72a6d9e778260d90f199 (patch)
treede8e5656bb710a986e27874f2feb69d0320c9853
parent04f089357e00b4840b8e5c1757f5c45275dd5af2 (diff)
downloadgcc-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
-rw-r--r--libstdc++-v3/ChangeLog7
-rw-r--r--libstdc++-v3/include/bits/atomic_0.h28
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; })