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 07679C4743D for ; Sun, 6 Jun 2021 13:22:03 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id D80AB6136E for ; Sun, 6 Jun 2021 13:22:02 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230003AbhFFNXv (ORCPT ); Sun, 6 Jun 2021 09:23:51 -0400 Received: from gate.crashing.org ([63.228.1.57]:54877 "EHLO gate.crashing.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229531AbhFFNXv (ORCPT ); Sun, 6 Jun 2021 09:23:51 -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 156DHgDq028954; Sun, 6 Jun 2021 08:17:42 -0500 Received: (from segher@localhost) by gate.crashing.org (8.14.1/8.14.1/Submit) id 156DHeno028953; Sun, 6 Jun 2021 08:17:40 -0500 X-Authentication-Warning: gate.crashing.org: segher set sender to segher@kernel.crashing.org using -f Date: Sun, 6 Jun 2021 08:17:40 -0500 From: Segher Boessenkool To: "Paul E. McKenney" Cc: Linus Torvalds , Alan Stern , 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: <20210606131740.GU18427@gate.crashing.org> 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> <20210606044333.GI4397@paulmck-ThinkPad-P17-Gen-1> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20210606044333.GI4397@paulmck-ThinkPad-P17-Gen-1> User-Agent: Mutt/1.4.2.3i Precedence: bulk List-ID: X-Mailing-List: linux-arch@vger.kernel.org On Sat, Jun 05, 2021 at 09:43:33PM -0700, Paul E. McKenney wrote: > So gcc might some day note a do-nothing asm and duplicate it for > the sole purpose of collapsing the "then" and "else" clauses. I > guess I need to keep my paranoia for the time being, then. :-/ Or a "do-something" asm, even. What it does is make sure it is executed on the real machine exactly like on the abstract machine. That is how C is defined, what a compiler *does*. The programmer does not have any direct control over the generated code. > Of course, there is no guarantee that gcc won't learn about > assembler constants. :-/ I am not sure what you call an "assembler constant" here. But you can be sure that GCC will not start doing anything here. GCC does not try to understand what you wrote in an inline asm, it just fills in the operands and that is all. It can do all the same things to it that it can do to any other code of course: duplicate it, deduplicate it, frobnicate it, etc. Segher