From patchwork Wed Jan 25 00:12:17 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Patrick Marlier X-Patchwork-Id: 137691 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 EE15C1007D7 for ; Wed, 25 Jan 2012 11:12:47 +1100 (EST) Comment: DKIM? See http://www.dkim.org DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=gcc.gnu.org; s=default; x=1328055169; h=Comment: DomainKey-Signature:Received:Received:Received:Received:Received: Received:Message-ID:Date:From:User-Agent:MIME-Version:To:CC: Subject:Content-Type:Mailing-List:Precedence:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:Sender: Delivered-To; bh=SdeajfXsSLld/vOY3y1QuQ2iq80=; b=ZpK+3o7cUzR5Z+P Rb+tRVU4g7KHdgo9x1Ohd/lxp0Sy0B/zISsLPC8yls/R2s6uuDMaLsyrkveZt6fY Y5q17zvGJ2jzl1+aNCXpYaiV9cMxjbKDEGa6gzCNcOWWD776pPd1/JNrRWFdRCP4 lIsre6qqu96toBVty/udqV9G0/VU= Comment: DomainKeys? See http://antispam.yahoo.com/domainkeys DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=default; d=gcc.gnu.org; h=Received:Received:X-SWARE-Spam-Status:X-Spam-Check-By:Received:Received:Received:Received:Message-ID:Date:From:User-Agent:MIME-Version:To:CC:Subject:Content-Type:X-IsSubscribed:Mailing-List:Precedence:List-Id:List-Unsubscribe:List-Archive:List-Post:List-Help:Sender:Delivered-To; b=m7Vvm5wWj34VnR97Q6n77iCupcItkihUhdo7gER/0/nR8j6qRSVr4cRWTFgpQM WN9W65ZWky7BNw/RU6lF31kQvah9Amyyc1OJeodVydqR015XklvJBmABAWeDIU9a XbHLck/OREhYNaGyUVESOf4PUB7i+4oeNTdDoTWnVI35Y=; Received: (qmail 21635 invoked by alias); 25 Jan 2012 00:12:41 -0000 Received: (qmail 21622 invoked by uid 22791); 25 Jan 2012 00:12:37 -0000 X-SWARE-Spam-Status: No, hits=-2.6 required=5.0 tests=AWL, BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, FREEMAIL_FROM, RCVD_IN_DNSWL_LOW, TW_CP, TW_CX X-Spam-Check-By: sourceware.org Received: from mail-qy0-f175.google.com (HELO mail-qy0-f175.google.com) (209.85.216.175) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 25 Jan 2012 00:12:20 +0000 Received: by qcha6 with SMTP id a6so525493qch.20 for ; Tue, 24 Jan 2012 16:12:20 -0800 (PST) Received: by 10.224.95.211 with SMTP id e19mr17798526qan.89.1327450339943; Tue, 24 Jan 2012 16:12:19 -0800 (PST) Received: from [192.168.2.2] (cpe-69-207-95-157.rochester.res.rr.com. [69.207.95.157]) by mx.google.com with ESMTPS id gy6sm7566122qab.1.2012.01.24.16.12.18 (version=SSLv3 cipher=OTHER); Tue, 24 Jan 2012 16:12:19 -0800 (PST) Message-ID: <4F1F48E1.9000507@gmail.com> Date: Tue, 24 Jan 2012 19:12:17 -0500 From: Patrick Marlier User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:8.0) Gecko/20111124 Thunderbird/8.0 MIME-Version: 1.0 To: gcc-patches CC: Richard Henderson , Aldy Hernandez , Torvald Riegel Subject: [libitm] Minor changes to libitm.h 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, I propose some minor modifications to libitm.h: * Add a link to current TM-ABI document. * Remove ITM_REGPARM from _ITM_beginTransaction since on x86-32, a variadic function ignores regparm. * Add ITM_PURE to _ITM_addUserCommitAction and _ITM_addUserUndoAction to be usable inside transactions. * Cosmetic changes to match GCC coding rules. By the way, is it on purpose that libitm.h is not installed? Tested on x86_64-unknown-linux-gnu. Ok for trunk? (Aldy, I am really sorry to bother you one more time. I owe you one) Thanks. --- Patrick. libitm/ 2012-01-24 Patrick Marlier * libitm.h (_ITM_beginTransaction): Remove ITM_REGPARM. (_ITM_addUserCommitAction): Add ITM_PURE attribute. (_ITM_addUserUndoAction): Likewise. Index: libitm.h =================================================================== --- libitm.h (revision 183497) +++ libitm.h (working copy) @@ -23,7 +23,7 @@ . */ /* The external interface of this library follows the specification described - in version 1 of http://www.intel.com/some/path/here.pdf. */ + in version 1 of http://software.intel.com/file/8097.pdf. */ #ifndef LIBITM_H #define LIBITM_H 1 @@ -117,7 +117,7 @@ typedef struct const char *psource; } _ITM_srcLocation; -typedef void (* _ITM_userUndoFunction)(void *); +typedef void (* _ITM_userUndoFunction) (void *); typedef void (* _ITM_userCommitFunction) (void *); #define _ITM_VERSION "0.90 (Feb 29 2008)" @@ -126,28 +126,31 @@ typedef void (* _ITM_userCommitFunction) (void *); extern int _ITM_versionCompatible (int) ITM_REGPARM; extern const char * _ITM_libraryVersion (void) ITM_REGPARM; -void _ITM_error(const _ITM_srcLocation *, int errorCode) +void _ITM_error (const _ITM_srcLocation *, int errorCode) ITM_REGPARM ITM_NORETURN; -extern _ITM_howExecuting _ITM_inTransaction(void) ITM_REGPARM; +extern _ITM_howExecuting _ITM_inTransaction (void) ITM_REGPARM; typedef uint64_t _ITM_transactionId_t; /* Transaction identifier */ #define _ITM_noTransactionId 1 /* Id for non-transactional code. */ -extern _ITM_transactionId_t _ITM_getTransactionId(void) ITM_REGPARM; +extern _ITM_transactionId_t _ITM_getTransactionId (void) ITM_REGPARM; -extern uint32_t _ITM_beginTransaction(uint32_t, ...) ITM_REGPARM; +/* ITM_REGPARM is ignored with variadic function on x86-32. */ +extern uint32_t _ITM_beginTransaction (uint32_t, ...); -extern void _ITM_abortTransaction(_ITM_abortReason) ITM_REGPARM ITM_NORETURN; +extern void _ITM_abortTransaction (_ITM_abortReason) ITM_REGPARM ITM_NORETURN; extern void _ITM_commitTransaction (void) ITM_REGPARM; extern void _ITM_changeTransactionMode (_ITM_transactionState) ITM_REGPARM; -extern void _ITM_addUserCommitAction(_ITM_userCommitFunction, - _ITM_transactionId_t, void *) ITM_REGPARM; +extern void _ITM_addUserCommitAction (_ITM_userCommitFunction, + _ITM_transactionId_t, void *) + ITM_REGPARM ITM_PURE; -extern void _ITM_addUserUndoAction(_ITM_userUndoFunction, void *) ITM_REGPARM; +extern void _ITM_addUserUndoAction (_ITM_userUndoFunction, void *) + ITM_REGPARM ITM_PURE; extern void _ITM_dropReferences (void *, size_t) ITM_REGPARM ITM_PURE; @@ -230,41 +233,41 @@ ITM_LOG(CE) extern void _ITM_LB (const void *, size_t) ITM_REGPARM; -extern void _ITM_memcpyRnWt(void *, const void *, size_t) ITM_REGPARM; -extern void _ITM_memcpyRnWtaR(void *, const void *, size_t) ITM_REGPARM; -extern void _ITM_memcpyRnWtaW(void *, const void *, size_t) ITM_REGPARM; -extern void _ITM_memcpyRtWn(void *, const void *, size_t) ITM_REGPARM; -extern void _ITM_memcpyRtWt(void *, const void *, size_t) ITM_REGPARM; -extern void _ITM_memcpyRtWtaR(void *, const void *, size_t) ITM_REGPARM; -extern void _ITM_memcpyRtWtaW(void *, const void *, size_t) ITM_REGPARM; -extern void _ITM_memcpyRtaRWn(void *, const void *, size_t) ITM_REGPARM; -extern void _ITM_memcpyRtaRWt(void *, const void *, size_t) ITM_REGPARM; -extern void _ITM_memcpyRtaRWtaR(void *, const void *, size_t) ITM_REGPARM; -extern void _ITM_memcpyRtaRWtaW(void *, const void *, size_t) ITM_REGPARM; -extern void _ITM_memcpyRtaWWn(void *, const void *, size_t) ITM_REGPARM; -extern void _ITM_memcpyRtaWWt(void *, const void *, size_t) ITM_REGPARM; -extern void _ITM_memcpyRtaWWtaR(void *, const void *, size_t) ITM_REGPARM; -extern void _ITM_memcpyRtaWWtaW(void *, const void *, size_t) ITM_REGPARM; +extern void _ITM_memcpyRnWt (void *, const void *, size_t) ITM_REGPARM; +extern void _ITM_memcpyRnWtaR (void *, const void *, size_t) ITM_REGPARM; +extern void _ITM_memcpyRnWtaW (void *, const void *, size_t) ITM_REGPARM; +extern void _ITM_memcpyRtWn (void *, const void *, size_t) ITM_REGPARM; +extern void _ITM_memcpyRtWt (void *, const void *, size_t) ITM_REGPARM; +extern void _ITM_memcpyRtWtaR (void *, const void *, size_t) ITM_REGPARM; +extern void _ITM_memcpyRtWtaW (void *, const void *, size_t) ITM_REGPARM; +extern void _ITM_memcpyRtaRWn (void *, const void *, size_t) ITM_REGPARM; +extern void _ITM_memcpyRtaRWt (void *, const void *, size_t) ITM_REGPARM; +extern void _ITM_memcpyRtaRWtaR (void *, const void *, size_t) ITM_REGPARM; +extern void _ITM_memcpyRtaRWtaW (void *, const void *, size_t) ITM_REGPARM; +extern void _ITM_memcpyRtaWWn (void *, const void *, size_t) ITM_REGPARM; +extern void _ITM_memcpyRtaWWt (void *, const void *, size_t) ITM_REGPARM; +extern void _ITM_memcpyRtaWWtaR (void *, const void *, size_t) ITM_REGPARM; +extern void _ITM_memcpyRtaWWtaW (void *, const void *, size_t) ITM_REGPARM; -extern void _ITM_memmoveRnWt(void *, const void *, size_t) ITM_REGPARM; -extern void _ITM_memmoveRnWtaR(void *, const void *, size_t) ITM_REGPARM; -extern void _ITM_memmoveRnWtaW(void *, const void *, size_t) ITM_REGPARM; -extern void _ITM_memmoveRtWn(void *, const void *, size_t) ITM_REGPARM; -extern void _ITM_memmoveRtWt(void *, const void *, size_t) ITM_REGPARM; -extern void _ITM_memmoveRtWtaR(void *, const void *, size_t) ITM_REGPARM; -extern void _ITM_memmoveRtWtaW(void *, const void *, size_t) ITM_REGPARM; -extern void _ITM_memmoveRtaRWn(void *, const void *, size_t) ITM_REGPARM; -extern void _ITM_memmoveRtaRWt(void *, const void *, size_t) ITM_REGPARM; -extern void _ITM_memmoveRtaRWtaR(void *, const void *, size_t) ITM_REGPARM; -extern void _ITM_memmoveRtaRWtaW(void *, const void *, size_t) ITM_REGPARM; -extern void _ITM_memmoveRtaWWn(void *, const void *, size_t) ITM_REGPARM; -extern void _ITM_memmoveRtaWWt(void *, const void *, size_t) ITM_REGPARM; -extern void _ITM_memmoveRtaWWtaR(void *, const void *, size_t) ITM_REGPARM; -extern void _ITM_memmoveRtaWWtaW(void *, const void *, size_t) ITM_REGPARM; +extern void _ITM_memmoveRnWt (void *, const void *, size_t) ITM_REGPARM; +extern void _ITM_memmoveRnWtaR (void *, const void *, size_t) ITM_REGPARM; +extern void _ITM_memmoveRnWtaW (void *, const void *, size_t) ITM_REGPARM; +extern void _ITM_memmoveRtWn (void *, const void *, size_t) ITM_REGPARM; +extern void _ITM_memmoveRtWt (void *, const void *, size_t) ITM_REGPARM; +extern void _ITM_memmoveRtWtaR (void *, const void *, size_t) ITM_REGPARM; +extern void _ITM_memmoveRtWtaW (void *, const void *, size_t) ITM_REGPARM; +extern void _ITM_memmoveRtaRWn (void *, const void *, size_t) ITM_REGPARM; +extern void _ITM_memmoveRtaRWt (void *, const void *, size_t) ITM_REGPARM; +extern void _ITM_memmoveRtaRWtaR (void *, const void *, size_t) ITM_REGPARM; +extern void _ITM_memmoveRtaRWtaW (void *, const void *, size_t) ITM_REGPARM; +extern void _ITM_memmoveRtaWWn (void *, const void *, size_t) ITM_REGPARM; +extern void _ITM_memmoveRtaWWt (void *, const void *, size_t) ITM_REGPARM; +extern void _ITM_memmoveRtaWWtaR (void *, const void *, size_t) ITM_REGPARM; +extern void _ITM_memmoveRtaWWtaW (void *, const void *, size_t) ITM_REGPARM; -extern void _ITM_memsetW(void *, int, size_t) ITM_REGPARM; -extern void _ITM_memsetWaR(void *, int, size_t) ITM_REGPARM; -extern void _ITM_memsetWaW(void *, int, size_t) ITM_REGPARM; +extern void _ITM_memsetW (void *, int, size_t) ITM_REGPARM; +extern void _ITM_memsetWaR (void *, int, size_t) ITM_REGPARM; +extern void _ITM_memsetWaW (void *, int, size_t) ITM_REGPARM; // ??? These are not yet in the official spec; still work-in-progress. @@ -277,7 +280,7 @@ extern void *_ITM_cxa_allocate_exception (size_t); extern void _ITM_cxa_throw (void *obj, void *tinfo, void *dest); extern void *_ITM_cxa_begin_catch (void *exc_ptr); extern void _ITM_cxa_end_catch (void); -extern void _ITM_commitTransactionEH(void *exc_ptr) ITM_REGPARM; +extern void _ITM_commitTransactionEH (void *exc_ptr) ITM_REGPARM; #ifdef __cplusplus } /* extern "C" */