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, 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 181CEC4743E for ; Sun, 6 Jun 2021 11:57:58 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id C95476141E for ; Sun, 6 Jun 2021 11:57:57 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230132AbhFFL7p (ORCPT ); Sun, 6 Jun 2021 07:59:45 -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-toolchains@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