On Wed, Jan 18, 2012 at 10:16 PM, Patrick Marlier <patrick.marl...@gmail.com> wrote:
>> IMO, whatever the future decision would be, we shouldn't leave one >> part of the compiler out-of-sync from the other. Proposed patch fixes >> _current_ situation, where in the future, it is expected that compiler >> and library changes in sync... > > > So in order to keep them in sync, this should be also applied to libitm if > your solution is chosen (At least to avoid confusion). > If the Intel TM-ABI (no idea what's the status of this specification) > specifies variadic function and regparm, it should be changed too. > > Index: libitm.h > =================================================================== > --- libitm.h (revision 183273) > +++ libitm.h (working copy) > @@ -136,7 +136,7 @@ typedef uint64_t _ITM_transactionId_t; /* Transact > > extern _ITM_transactionId_t _ITM_getTransactionId(void) ITM_REGPARM; > > -extern uint32_t _ITM_beginTransaction(uint32_t, ...) ITM_REGPARM; > +extern uint32_t _ITM_beginTransaction(uint32_t, ...); > > extern void _ITM_abortTransaction(_ITM_abortReason) ITM_REGPARM > ITM_NORETURN; The spec does say that all function should be regparm(2), but I agree that the above is less confusing. The attribute is ignored, but perhaps a comment would clear this confusion even more. Uros.