mirror of git://gcc.gnu.org/git/gcc.git
libstdc++: Fix bootstrap failure in atomicity.cc
My r16-3810-g6456da6bab8a2c changes broke bootstrap for targets that use the mutex-based atomic helpers. This fixes it by casting away the unnecessary volatile-qualification on the _Atomic_word* before passing it to __exchange_and_add_single. libstdc++-v3/ChangeLog: * config/cpu/generic/atomicity_mutex/atomicity.h (__exchange_and_add): Use const_cast to remove volatile.
This commit is contained in:
parent
1d866f3b1c
commit
4fe3b8b8db
|
|
@ -44,7 +44,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
__exchange_and_add(volatile _Atomic_word* __mem, int __val) throw ()
|
||||
{
|
||||
__gnu_cxx::__scoped_lock sentry(get_atomic_mutex());
|
||||
return __gnu_cxx::__exchange_and_add_single(__mem, __val);
|
||||
// The volatile qualification is meaningless. All changes to the memory
|
||||
// location happen while this mutex is locked so it's not volatile at all.
|
||||
auto __mem2 = const_cast<_Atomic_word*>(__mem);
|
||||
return __gnu_cxx::__exchange_and_add_single(__mem2, __val);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
|||
Loading…
Reference in New Issue