From patchwork Tue Sep 7 14:11:43 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paolo Carlini X-Patchwork-Id: 64023 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) by ozlabs.org (Postfix) with SMTP id DCD4EB6F06 for ; Wed, 8 Sep 2010 01:02:25 +1000 (EST) Received: (qmail 23335 invoked by alias); 7 Sep 2010 14:13:02 -0000 Received: (qmail 23103 invoked by uid 22791); 7 Sep 2010 14:12:51 -0000 X-SWARE-Spam-Status: No, hits=-1.8 required=5.0 tests=AWL, BAYES_00, RCVD_IN_DNSWL_NONE X-Spam-Check-By: sourceware.org Received: from vsmtp21.tin.it (HELO vsmtp21.tin.it) (212.216.176.109) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 07 Sep 2010 14:12:31 +0000 Received: from [192.168.0.4] (79.52.192.231) by vsmtp21.tin.it (8.5.113) id 4BC86A490A6F2F95; Tue, 7 Sep 2010 16:11:43 +0200 Message-ID: <4C86481F.20607@oracle.com> Date: Tue, 07 Sep 2010 16:11:43 +0200 From: Paolo Carlini User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.11) Gecko/20100714 SUSE/3.0.6 Thunderbird/3.0.6 MIME-Version: 1.0 To: "gcc-patches@gcc.gnu.org" CC: libstdc++ Subject: [v3] libstdc++/45398 X-IsSubscribed: yes Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Hi, applied mainline and 4_5-branch. Tested x86_64-linux. Paolo. /////////////////////////// 2010-09-07 Paolo Carlini PR libstdc++/45398 * include/std/atomic (atomic<_TP*>::store): Define. * include/std/atomic (atomic<_TP*>::load, exchange): Define inline. Index: include/std/atomic =================================================================== --- include/std/atomic (revision 163946) +++ include/std/atomic (working copy) @@ -141,13 +141,16 @@ atomic(_Tp* __v) : atomic_address(__v) { } void - store(_Tp*, memory_order = memory_order_seq_cst); + store(_Tp* __v, memory_order __m = memory_order_seq_cst) + { atomic_address::store(__v, __m); } _Tp* - load(memory_order = memory_order_seq_cst) const; + load(memory_order __m = memory_order_seq_cst) const + { return static_cast<_Tp*>(atomic_address::load(__m)); } _Tp* - exchange(_Tp*, memory_order = memory_order_seq_cst); + exchange(_Tp* __v, memory_order __m = memory_order_seq_cst) + { return static_cast<_Tp*>(atomic_address::exchange(__v, __m)); } bool compare_exchange_weak(_Tp*&, _Tp*, memory_order, memory_order); @@ -487,18 +490,7 @@ using __base_type::operator=; }; - template - _Tp* - atomic<_Tp*>::load(memory_order __m) const - { return static_cast<_Tp*>(atomic_address::load(__m)); } - - template - _Tp* - atomic<_Tp*>::exchange(_Tp* __v, memory_order __m) - { return static_cast<_Tp*>(atomic_address::exchange(__v, __m)); } - - template bool atomic<_Tp*>::compare_exchange_weak(_Tp*& __r, _Tp* __v, memory_order __m1, memory_order __m2)