summaryrefslogtreecommitdiff
path: root/libstdc++-v3/include/std
diff options
context:
space:
mode:
authorredi <redi@138bc75d-0d04-0410-961f-82ee72b054a4>2015-09-17 15:46:04 +0000
committerredi <redi@138bc75d-0d04-0410-961f-82ee72b054a4>2015-09-17 15:46:04 +0000
commit4ca99588b4d09a693b138b0373e896cdb9f9c05a (patch)
tree1f0c51ea5f77e0d267433e5aeeec1b8ac770b3b8 /libstdc++-v3/include/std
parentb422b023f07d868c72624ad4e3a0116cbd92d409 (diff)
downloadgcc-4ca99588b4d09a693b138b0373e896cdb9f9c05a.tar.gz
Handle alignment in __atomic_is_lock_free
gcc: 2015-09-17 Richard Henderson <rth@redhat.com> PR libstdc++/65913 * builtins.c (fold_builtin_atomic_always_lock_free): Handle fake pointers that encode the alignment of the object. libstdc++-v3: 2015-09-17 Jonathan Wakely <jwakely@redhat.com> PR libstdc++/65913 * include/bits/atomic_base.h (__atomic_base<_TTp>::is_lock_free(), __atomic_base<_PTp*>::is_lock_free()): Call the built-in with the immediate pointer value, not a variable. * include/std/atomic (atomic<T>::is_lock_free()): Likewise. * testsuite/29_atomics/atomic/65913.cc: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@227878 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3/include/std')
-rw-r--r--libstdc++-v3/include/std/atomic8
1 files changed, 4 insertions, 4 deletions
diff --git a/libstdc++-v3/include/std/atomic b/libstdc++-v3/include/std/atomic
index 125e37a2838..cdd1f0b992d 100644
--- a/libstdc++-v3/include/std/atomic
+++ b/libstdc++-v3/include/std/atomic
@@ -208,16 +208,16 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
is_lock_free() const noexcept
{
// Produce a fake, minimally aligned pointer.
- void *__a = reinterpret_cast<void *>(-__alignof(_M_i));
- return __atomic_is_lock_free(sizeof(_M_i), __a);
+ return __atomic_is_lock_free(sizeof(_M_i),
+ reinterpret_cast<void *>(-__alignof(_M_i)));
}
bool
is_lock_free() const volatile noexcept
{
// Produce a fake, minimally aligned pointer.
- void *__a = reinterpret_cast<void *>(-__alignof(_M_i));
- return __atomic_is_lock_free(sizeof(_M_i), __a);
+ return __atomic_is_lock_free(sizeof(_M_i),
+ reinterpret_cast<void *>(-__alignof(_M_i)));
}
void