at v192 2.9 kB view raw
1From e4bde20f2eec0a51be14533871d2123bd2ab9cf3 Mon Sep 17 00:00:00 2001 2From: Andrey Semashev <andrey.semashev@gmail.com> 3Date: Fri, 28 Feb 2014 12:43:11 +0400 4Subject: [PATCH] More compilation fixes for the case when 128-bit integers are 5 not supported. 6 7--- 8 boost/atomic/detail/gcc-atomic.hpp | 17 ++++++++++++----- 9 1 file changed, 12 insertions(+), 5 deletions(-) 10 11diff --git a/boost/atomic/detail/gcc-atomic.hpp b/boost/atomic/detail/gcc-atomic.hpp 12index a130590..4af99a1 100644 13--- a/boost/atomic/detail/gcc-atomic.hpp 14+++ b/boost/atomic/detail/gcc-atomic.hpp 15@@ -958,14 +958,16 @@ class base_atomic<T, void, 16, Sign> 16 17 public: 18 BOOST_DEFAULTED_FUNCTION(base_atomic(void), {}) 19- explicit base_atomic(value_type const& v) BOOST_NOEXCEPT : v_(0) 20+ explicit base_atomic(value_type const& v) BOOST_NOEXCEPT 21 { 22+ memset(&v_, 0, sizeof(v_)); 23 memcpy(&v_, &v, sizeof(value_type)); 24 } 25 26 void store(value_type const& v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT 27 { 28- storage_type tmp = 0; 29+ storage_type tmp; 30+ memset(&tmp, 0, sizeof(tmp)); 31 memcpy(&tmp, &v, sizeof(value_type)); 32 __atomic_store_n(&v_, tmp, atomics::detail::convert_memory_order_to_gcc(order)); 33 } 34@@ -980,7 +982,8 @@ class base_atomic<T, void, 16, Sign> 35 36 value_type exchange(value_type const& v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT 37 { 38- storage_type tmp = 0; 39+ storage_type tmp; 40+ memset(&tmp, 0, sizeof(tmp)); 41 memcpy(&tmp, &v, sizeof(value_type)); 42 tmp = __atomic_exchange_n(&v_, tmp, atomics::detail::convert_memory_order_to_gcc(order)); 43 value_type res; 44@@ -994,7 +997,9 @@ class base_atomic<T, void, 16, Sign> 45 memory_order success_order, 46 memory_order failure_order) volatile BOOST_NOEXCEPT 47 { 48- storage_type expected_s = 0, desired_s = 0; 49+ storage_type expected_s, desired_s; 50+ memset(&expected_s, 0, sizeof(expected_s)); 51+ memset(&desired_s, 0, sizeof(desired_s)); 52 memcpy(&expected_s, &expected, sizeof(value_type)); 53 memcpy(&desired_s, &desired, sizeof(value_type)); 54 const bool success = __atomic_compare_exchange_n(&v_, &expected_s, desired_s, false, 55@@ -1010,7 +1015,9 @@ class base_atomic<T, void, 16, Sign> 56 memory_order success_order, 57 memory_order failure_order) volatile BOOST_NOEXCEPT 58 { 59- storage_type expected_s = 0, desired_s = 0; 60+ storage_type expected_s, desired_s; 61+ memset(&expected_s, 0, sizeof(expected_s)); 62+ memset(&desired_s, 0, sizeof(desired_s)); 63 memcpy(&expected_s, &expected, sizeof(value_type)); 64 memcpy(&desired_s, &desired, sizeof(value_type)); 65 const bool success = __atomic_compare_exchange_n(&v_, &expected_s, desired_s, true,