Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 3 Apr 2014 21:53:36 +0200
From:      Marius Strobl <marius@alchemy.franken.de>
To:        office@freebsd.org, bapt@freebsd.org, beat@freebsd.org
Cc:        bug-followup@freebsd.org
Subject:   Re: ports/187958: devel/boost-libs: gcc-atomic.hpp:961:64: error: no matching constructor for initialization of 'storage_type' (aka 'boost::atomics::detail::storage128_type')
Message-ID:  <20140403195336.GB86304@alchemy.franken.de>

next in thread | raw e-mail | index | archive | help

--J/dobhs11T7y2rNN
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline


Hi guys,

could you please approve the attached patch to be committed?

%%
Pull in the following revisions from https://github.com/boostorg/, fixing
compilation with clang 3.4:
Commit: 6bb71fdd8f7cc346d90fb14beb38b7297fc1ffd9
Fixed incorrect initialization of 128-bit values, when no native support for
128-bit integers is available.
Commit: e4bde20f2eec0a51be14533871d2123bd2ab9cf3
More compilation fixes for the case when 128-bit integers are not supported.

PR: 187958
%%

Marius


--J/dobhs11T7y2rNN
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment; filename="boost-libs_clang.diff"

Index: Makefile
===================================================================
--- Makefile	(revision 350030)
+++ Makefile	(working copy)
@@ -4,6 +4,8 @@
 PORTNAME=	boost-libs
 COMMENT=	Free portable C++ libraries (without Boost.Python)
 
+PORTREVISION=	1
+
 BUILD_DEPENDS+=	bjam:${PORTSDIR}/devel/boost-jam
 
 OPTIONS_DEFINE=	VERBOSE_BUILD DEBUG ICU OPTIMIZED_CFLAGS
Index: files/patch-boost__atomic__detail__cas128strong.hpp
===================================================================
--- files/patch-boost__atomic__detail__cas128strong.hpp	(revision 0)
+++ files/patch-boost__atomic__detail__cas128strong.hpp	(working copy)
@@ -0,0 +1,33 @@
+--- boost/atomic/detail/cas128strong.hpp	2013-07-20 20:01:35.000000000 +0200
++++ boost/atomic/detail/cas128strong.hpp.orig	2014-04-03 16:34:19.000000000 +0200
+@@ -196,15 +196,17 @@
+ 
+ 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& value, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
+     {
+-        storage_type value_s = 0;
++        storage_type value_s;
++        memset(&value_s, 0, sizeof(value_s));
+         memcpy(&value_s, &value, sizeof(value_type));
+         platform_fence_before_store(order);
+         platform_store128(value_s, &v_);
+@@ -247,7 +249,9 @@
+         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));
+ 

Property changes on: files/patch-boost__atomic__detail__cas128strong.hpp
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: fbsd:nokeywords
## -0,0 +1 ##
+yes
\ No newline at end of property
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Index: files/patch-boost__atomic__detail__gcc-atomic.hpp
===================================================================
--- files/patch-boost__atomic__detail__gcc-atomic.hpp	(revision 0)
+++ files/patch-boost__atomic__detail__gcc-atomic.hpp	(working copy)
@@ -0,0 +1,53 @@
+--- boost/atomic/detail/gcc-atomic.hpp	2013-07-20 20:01:35.000000000 +0200
++++ boost/atomic/detail/gcc-atomic.hpp	2014-04-03 18:03:30.000000000 +0200
+@@ -958,14 +958,16 @@
+ 
+ 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 @@
+ 
+     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 @@
+         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 @@
+         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,

Property changes on: files/patch-boost__atomic__detail__gcc-atomic.hpp
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: fbsd:nokeywords
## -0,0 +1 ##
+yes
\ No newline at end of property
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property

--J/dobhs11T7y2rNN--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20140403195336.GB86304>