diff options
author | Dan Peebles <thetypesaretoobig@gmail.com> | 2015-02-08 21:42:22 -0500 |
---|---|---|
committer | Dan Peebles <thetypesaretoobig@gmail.com> | 2015-02-08 22:19:04 -0500 |
commit | b0e1db115968c79746b77de99fd5107359ebff9d (patch) | |
tree | 5aadffb5e39126374d16272c55733a5b935c8b1b /pkgs/development/libraries/boost/clang-math.patch | |
parent | c165f24208d770713934c0cd943255d54a73d35c (diff) | |
download | nixpkgs-b0e1db115968c79746b77de99fd5107359ebff9d.tar nixpkgs-b0e1db115968c79746b77de99fd5107359ebff9d.tar.gz nixpkgs-b0e1db115968c79746b77de99fd5107359ebff9d.tar.bz2 nixpkgs-b0e1db115968c79746b77de99fd5107359ebff9d.tar.lz nixpkgs-b0e1db115968c79746b77de99fd5107359ebff9d.tar.xz nixpkgs-b0e1db115968c79746b77de99fd5107359ebff9d.tar.zst nixpkgs-b0e1db115968c79746b77de99fd5107359ebff9d.zip |
Fix boost 1.55 on clang (1.56 onwards already have the fix)
See https://trac.macports.org/ticket/42282 for more.
Diffstat (limited to 'pkgs/development/libraries/boost/clang-math.patch')
-rw-r--r-- | pkgs/development/libraries/boost/clang-math.patch | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/pkgs/development/libraries/boost/clang-math.patch b/pkgs/development/libraries/boost/clang-math.patch new file mode 100644 index 00000000000..aa3d76af28b --- /dev/null +++ b/pkgs/development/libraries/boost/clang-math.patch @@ -0,0 +1,65 @@ +From e4bde20f2eec0a51be14533871d2123bd2ab9cf3 Mon Sep 17 00:00:00 2001 +From: Andrey Semashev <andrey.semashev@gmail.com> +Date: Fri, 28 Feb 2014 12:43:11 +0400 +Subject: [PATCH] More compilation fixes for the case when 128-bit integers are + not supported. + +--- + boost/atomic/detail/gcc-atomic.hpp | 17 ++++++++++++----- + 1 file changed, 12 insertions(+), 5 deletions(-) + +diff --git a/boost/atomic/detail/gcc-atomic.hpp b/boost/atomic/detail/gcc-atomic.hpp +index a130590..4af99a1 100644 +--- a/boost/atomic/detail/gcc-atomic.hpp ++++ b/boost/atomic/detail/gcc-atomic.hpp +@@ -958,14 +958,16 @@ class base_atomic<T, void, 16, Sign> + + public: + BOOST_DEFAULTED_FUNCTION(base_atomic(void), {}) +- explicit base_atomic(value_type const& v) BOOST_NOEXCEPT : v_(0) ++ explicit base_atomic(value_type const& v) BOOST_NOEXCEPT + { ++ memset(&v_, 0, sizeof(v_)); + memcpy(&v_, &v, sizeof(value_type)); + } + + void store(value_type const& v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { +- storage_type tmp = 0; ++ storage_type tmp; ++ memset(&tmp, 0, sizeof(tmp)); + memcpy(&tmp, &v, sizeof(value_type)); + __atomic_store_n(&v_, tmp, atomics::detail::convert_memory_order_to_gcc(order)); + } +@@ -980,7 +982,8 @@ class base_atomic<T, void, 16, Sign> + + value_type exchange(value_type const& v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { +- storage_type tmp = 0; ++ storage_type tmp; ++ memset(&tmp, 0, sizeof(tmp)); + memcpy(&tmp, &v, sizeof(value_type)); + tmp = __atomic_exchange_n(&v_, tmp, atomics::detail::convert_memory_order_to_gcc(order)); + value_type res; +@@ -994,7 +997,9 @@ class base_atomic<T, void, 16, Sign> + memory_order success_order, + memory_order failure_order) volatile BOOST_NOEXCEPT + { +- storage_type expected_s = 0, desired_s = 0; ++ storage_type expected_s, desired_s; ++ memset(&expected_s, 0, sizeof(expected_s)); ++ memset(&desired_s, 0, sizeof(desired_s)); + memcpy(&expected_s, &expected, sizeof(value_type)); + memcpy(&desired_s, &desired, sizeof(value_type)); + const bool success = __atomic_compare_exchange_n(&v_, &expected_s, desired_s, false, +@@ -1010,7 +1015,9 @@ class base_atomic<T, void, 16, Sign> + memory_order success_order, + memory_order failure_order) volatile BOOST_NOEXCEPT + { +- storage_type expected_s = 0, desired_s = 0; ++ storage_type expected_s, desired_s; ++ memset(&expected_s, 0, sizeof(expected_s)); ++ memset(&desired_s, 0, sizeof(desired_s)); + memcpy(&expected_s, &expected, sizeof(value_type)); + memcpy(&desired_s, &desired, sizeof(value_type)); + const bool success = __atomic_compare_exchange_n(&v_, &expected_s, desired_s, true, |