diff options
Diffstat (limited to 'gcc-4.9/libstdc++-v3/include/std/atomic')
-rw-r--r-- | gcc-4.9/libstdc++-v3/include/std/atomic | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/gcc-4.9/libstdc++-v3/include/std/atomic b/gcc-4.9/libstdc++-v3/include/std/atomic index ece75a4e4..371144628 100644 --- a/gcc-4.9/libstdc++-v3/include/std/atomic +++ b/gcc-4.9/libstdc++-v3/include/std/atomic @@ -161,7 +161,15 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION struct atomic { private: - _Tp _M_i; + // Align 1/2/4/8/16-byte types to at least their size. + static constexpr int _S_min_alignment + = (sizeof(_Tp) & (sizeof(_Tp) - 1)) || sizeof(_Tp) > 16 + ? 0 : sizeof(_Tp); + + static constexpr int _S_alignment + = _S_min_alignment > alignof(_Tp) ? _S_min_alignment : alignof(_Tp); + + alignas(_S_alignment) _Tp _M_i; public: atomic() noexcept = default; |