Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp2517472pxj; Sun, 6 Jun 2021 05:02:59 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxu8nCCD9LYrJ4im2TNrXSTANiB1AxQ0QaL9CCaakM/9K+BQLDzqD7B+jkKJ+YSbE9U0wQo X-Received: by 2002:a17:906:2b04:: with SMTP id a4mr87734ejg.6.1622980979270; Sun, 06 Jun 2021 05:02:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1622980979; cv=none; d=google.com; s=arc-20160816; b=f/4XKpmy4rFc1LBic9ZFeA73bQIVMtcKiS8QZ8RB9PwWgzNa79xBKNNvyCHlozAsbg aBwvowmceeCU3L+YRhYNaSk1ESZuprnKxf64nGvmOqeRusR1/zx9EJanAO83+l4BVhPJ EMhZyrtg176sJlCyRV89cPPW+Ehzyd/ODYwSkfVh50UmrJA+vq/PjKZWoUe3K8x2+HRg r5rKxfQv2QYQytG3UDR2mYUnAaxX8DaXN9a1z13UNYjDPP0i6J6e/R85peoxPeX86tbj Kw+sFIjErqtnUsvdljC1YEQjAlraQixNtZUjWNocEeH6YsTzIbPeCocq4Tf5Q306Uwnd SShg== 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=Lpse+XR9O9ddWdGTRJ6M8rSJURA2VmSizC+Z4bBxAi0=; b=eVCfU4h/9uPmpdxnrJBXmshNNf9M27jY38/ptMLE/5V+vvXXryt9Fdh2oHlNVxndto 3LLAocDt86yLIDU2cYpz5srnTFJr8Knh3G6uqZSowkCSMStyG/DoiTnHCcaND7fLbP6s hAGafYNTPIA14klaMNRYSb+SpWuB9Hs/upYcmR3ZIdPn4vJDO9gyOYI/qFhkpVpADZIz U1DY0PObTp86qkQx0M/3tIMsPUfuIkM77WJxBDjEYpcsfARayuAbVWXxBSiT3SjFeA32 Rb5SxFkaQ9cN8myfWGEsr+WFHMCQx7oI+Af/938d7r2aRg6hwWpiG0xpR4iUhvxKvFV5 93DQ== 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 a16si9434178eds.411.2021.06.06.05.02.36; Sun, 06 Jun 2021 05:02:59 -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 S230145AbhFFL7q (ORCPT + 99 others); Sun, 6 Jun 2021 07:59:46 -0400 Received: from gate.crashing.org ([63.228.1.57]:56496 "EHLO gate.crashing.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230127AbhFFL7o (ORCPT ); Sun, 6 Jun 2021 07:59:44 -0400 Received: from gate.crashing.org (localhost.localdomain [127.0.0.1]) by gate.crashing.org (8.14.1/8.14.1) with ESMTP id 156Brcoq023903; Sun, 6 Jun 2021 06:53:38 -0500 Received: (from segher@localhost) by gate.crashing.org (8.14.1/8.14.1/Submit) id 156Bra5W023901; Sun, 6 Jun 2021 06:53:36 -0500 X-Authentication-Warning: gate.crashing.org: segher set sender to segher@kernel.crashing.org using -f Date: Sun, 6 Jun 2021 06:53:36 -0500 From: Segher Boessenkool To: Alan Stern 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: <20210606115336.GS18427@gate.crashing.org> References: <20210604182708.GB1688170@rowland.harvard.edu> <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> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20210606012903.GA1723421@rowland.harvard.edu> User-Agent: Mutt/1.4.2.3i Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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. 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