Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp2574831pxj; Sun, 6 Jun 2021 06:48:53 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwWGVsy0hqKN9W1w7sLmqK/Mp847nRW4S+A7B6vwbShDGkcmBqcQRsMwfdhxW8ezFnwscCy X-Received: by 2002:a17:907:9617:: with SMTP id gb23mr51798ejc.483.1622987333100; Sun, 06 Jun 2021 06:48:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1622987333; cv=none; d=google.com; s=arc-20160816; b=M6CYBX5v2EBOWA9i0JeNCgz6Dw8ogn47lHXm0U0DMEgrSc/83TRlOZ/9m5J/j9buyQ OpKl4oS39mymZLUBhbz2ZQFNqyIkAA2s3bHo+Ru4dVwqSAGf7BwT9rNawdTt0XTQ5wrO dVnJcwfAbxQ2+y4bJ0+xtrtOXJFtG1yVipo/gR3gy5prxPW6VawKlwXTNmBA/G4yXqjm 6V3jZ10eVJ+aDT7T158XfohyTt2tKG1Fq7nTxOLR6+f/jzi2wGNEFGEYa3pVa+eVSKTG XSgC1lKadEszRimBc30quIpJJ5SODGa+ZUOjlLAUeOLR9iinCnBf8c4xVsPGZVhHiWnu 07Aw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:user-agent:in-reply-to:content-disposition :mime-version:references:message-id:subject:cc:to:from:date; bh=3W26gq9jCmkql9Wj6+HstvgrdGcl0q8s5Sd8NyoxwR8=; b=XZ94pOTfkTDEoZ58Ko0T0BbovrOtIlqnXGn0ZYghjpz262BZF9cAOFFI2oKsCVQtq5 JCc54KYsDTFJ0euDLdlh+mGysWAD4aTbZ/PyPUavggD3zyV5V+AUllr/1H0f7p+/Ltdd NFTJk0WOHW76pKiSx8pirxiZj0C1GkJemImmmT8P0d6TN7HM2r6RUTLir1qGnNkNr1QE TqvDYMdPxgDZj0Y4aWuiTB69thW9MeJzro+Dl4VcOfNU41C7zkkMaVJtS+ga2vYPRGen 5A2ITzZf4JHFNBQU5pQWN3hOqHJKLEisEZcITEROYfP55Sr/M++WCPqh2YGIFyvfLEmF 21dw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id b25si3507927edw.336.2021.06.06.06.48.12; Sun, 06 Jun 2021 06:48:53 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230091AbhFFNrZ (ORCPT + 99 others); Sun, 6 Jun 2021 09:47:25 -0400 Received: from netrider.rowland.org ([192.131.102.5]:49489 "HELO netrider.rowland.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with SMTP id S230003AbhFFNrY (ORCPT ); Sun, 6 Jun 2021 09:47:24 -0400 Received: (qmail 1736478 invoked by uid 1000); 6 Jun 2021 09:45:32 -0400 Date: Sun, 6 Jun 2021 09:45:32 -0400 From: Alan Stern To: Segher Boessenkool Cc: "Paul E. McKenney" , Linus Torvalds , Peter Zijlstra , Will Deacon , Andrea Parri , Boqun Feng , Nick Piggin , David Howells , Jade Alglave , Luc Maranget , Akira Yokosawa , Linux Kernel Mailing List , linux-toolchains@vger.kernel.org, linux-arch Subject: Re: [RFC] LKMM: Add volatile_if() Message-ID: <20210606134532.GA1736178@rowland.harvard.edu> References: <20210604205600.GB4397@paulmck-ThinkPad-P17-Gen-1> <20210604214010.GD4397@paulmck-ThinkPad-P17-Gen-1> <20210605145739.GB1712909@rowland.harvard.edu> <20210606001418.GH4397@paulmck-ThinkPad-P17-Gen-1> <20210606012903.GA1723421@rowland.harvard.edu> <20210606115336.GS18427@gate.crashing.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20210606115336.GS18427@gate.crashing.org> User-Agent: Mutt/1.10.1 (2018-07-13) Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sun, Jun 06, 2021 at 06:53:36AM -0500, Segher Boessenkool wrote: > On Sat, Jun 05, 2021 at 09:29:03PM -0400, Alan Stern wrote: > > Interesting. And changing one of the branches from barrier() to __asm__ > > __volatile__("nop": : :"memory") also causes a branch to be emitted. So > > even though the compiler doesn't "look inside" assembly code, it does > > compare two pieces at least textually and apparently assumes if they are > > identical then they do the same thing. > > And that is a simple fact, since the same assembler code (at the same > spot in the program) will do the same thing no matter how that ended up > there. Sure. But the same assembler code at two different spots in the program might not do the same thing. (Think of code that stores the current EIP register's value into a variable.) So while de-duplicating such code may be allowed, it will give rise to observable results at execution time. Alan > And the compiler always is allowed to duplicate, join, delete, you name > it, inline assembler code. The only thing that it cares about is > semantics of the code, just like for any other code. > > > Segher