Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752544AbaBZNJz (ORCPT ); Wed, 26 Feb 2014 08:09:55 -0500 Received: from mx1.redhat.com ([209.132.183.28]:44323 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751342AbaBZNJy (ORCPT ); Wed, 26 Feb 2014 08:09:54 -0500 Subject: Re: [RFC][PATCH 0/5] arch: atomic rework From: Torvald Riegel To: "Joseph S. Myers" Cc: "Paul E. McKenney" , Michael Matz , Linus Torvalds , Will Deacon , Peter Zijlstra , Ramana Radhakrishnan , David Howells , "linux-arch@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "akpm@linux-foundation.org" , "mingo@kernel.org" , "gcc@gcc.gnu.org" In-Reply-To: References: <20140220083032.GN4250@linux.vnet.ibm.com> <20140220181116.GT4250@linux.vnet.ibm.com> <20140220185608.GX4250@linux.vnet.ibm.com> <20140220221027.GC4250@linux.vnet.ibm.com> <20140221191318.GK4250@linux.vnet.ibm.com> Content-Type: text/plain; charset="UTF-8" Date: Wed, 26 Feb 2014 14:09:17 +0100 Message-ID: <1393420157.28840.8691.camel@triegel.csb> Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, 2014-02-21 at 22:10 +0000, Joseph S. Myers wrote: > On Fri, 21 Feb 2014, Paul E. McKenney wrote: > > > This needs to be as follows: > > > > [[carries_dependency]] int getzero(int i [[carries_dependency]]) > > { > > return i - i; > > } > > > > Otherwise dependencies won't get carried through it. > > C11 doesn't have attributes at all (and no specification regarding calls > and dependencies that I can see). And the way I read the C++11 > specification of carries_dependency is that specifying carries_dependency > is purely about increasing optimization of the caller: that if it isn't > specified, then the caller doesn't know what dependencies might be > carried. "Note: The carries_dependency attribute does not change the > meaning of the program, but may result in generation of more efficient > code. - end note". I think that this last sentence can be kind of misleading, especially when looking at it from an implementation point of view. How dependencies are handled (ie, preserving the syntactic dependencies vs. emitting barriers) must be part of the ABI, or things like [[carries_dependency]] won't work as expected (or lead to inefficient code). Thus, in practice, all compiler vendors on a platform would have to agree to a particular handling, which might end up in selecting the easy-but-conservative implementation option (ie, always emitting mo_acquire when the source uses mo_consume). -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/