From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.3 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 703AFC4743E for ; Sun, 6 Jun 2021 13:47:53 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 5106F61408 for ; Sun, 6 Jun 2021 13:47:53 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230003AbhFFNtk (ORCPT ); Sun, 6 Jun 2021 09:49:40 -0400 Received: from netrider.rowland.org ([192.131.102.5]:55005 "HELO netrider.rowland.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with SMTP id S230084AbhFFNtk (ORCPT ); Sun, 6 Jun 2021 09:49:40 -0400 Received: (qmail 1736554 invoked by uid 1000); 6 Jun 2021 09:47:49 -0400 Date: Sun, 6 Jun 2021 09:47:49 -0400 From: Alan Stern To: Segher Boessenkool Cc: Linus Torvalds , "Paul E. McKenney" , 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: <20210606134749.GB1736178@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> <20210606125955.GT18427@gate.crashing.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20210606125955.GT18427@gate.crashing.org> User-Agent: Mutt/1.10.1 (2018-07-13) Precedence: bulk List-ID: X-Mailing-List: linux-arch@vger.kernel.org On Sun, Jun 06, 2021 at 07:59:55AM -0500, Segher Boessenkool wrote: > On Sat, Jun 05, 2021 at 08:41:00PM -0700, Linus Torvalds wrote: > > On Sat, Jun 5, 2021 at 6:29 PM 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. > > > > That's actually a feature in some cases, ie the ability to do CSE on > > asm statements (ie the "always has the same output" optimization that > > the docs talk about). > > > > So gcc has always looked at the asm string for that reason, afaik. > > GCC does not pretend it can understand the asm. But it can see when > two asm statements are identical. How similar do two asm strings have to be before they are considered identical? For instance, do changes to the amount of leading or trailing whitespace matter? Or what about including an empty assembly statement in one but not the other? Alan