From: "Michael S. Tsirkin" <mst@redhat•com>
To: linux-kernel@vger•kernel.org
Cc: Jason Wang <jasowang@redhat•com>,
Alan Stern <stern@rowland•harvard.edu>,
Andrea Parri <andrea.parri@amarulasolutions•com>,
Will Deacon <will.deacon@arm•com>,
Peter Zijlstra <peterz@infradead•org>,
Boqun Feng <boqun.feng@gmail•com>,
Nicholas Piggin <npiggin@gmail•com>,
David Howells <dhowells@redhat•com>,
Jade Alglave <j.alglave@ucl•ac.uk>,
Luc Maranget <luc.maranget@inria•fr>,
"Paul E. McKenney" <paulmck@linux•vnet.ibm.com>,
Akira Yokosawa <akiyks@gmail•com>,
Daniel Lustig <dlustig@nvidia•com>,
linux-arch@vger•kernel.org, netdev@vger•kernel.org,
virtualization@lists•linux-foundation.org,
Eli Friedman <efriedma@codeaurora•org>,
Joe Perches <joe@perches•com>,
Nick Desaulniers <ndesaulniers@google•com>,
Linus Torvalds <torvalds@linux-foundation•org>,
Subject: [PATCH RFC 1/4] include/linux/compiler*.h: fix OPTIMIZER_HIDE_VAR
Date: Wed, 2 Jan 2019 15:57:49 -0500 [thread overview]
Message-ID: <20190102205715.14054-2-mst@redhat.com> (raw)
In-Reply-To: <20190102205715.14054-1-mst@redhat.com>
Since commit 815f0ddb346c ("include/linux/compiler*.h: make compiler-*.h
mutually exclusive") clang no longer reuses the OPTIMIZER_HIDE_VAR macro
from compiler-gcc - instead it gets the version in
include/linux/compiler.h. Unfortunately that version doesn't actually
prevent compiler from optimizing out the variable.
Fix up by moving the macro out from compiler-gcc.h to compiler.h.
Compilers without incline asm support will keep working
since it's protected by an ifdef.
Also fix up comments to match reality since we are no longer overriding
any macros.
Build-tested with gcc and clang.
Fixes: 815f0ddb346c ("include/linux/compiler*.h: make compiler-*.h mutually exclusive")
Cc: Eli Friedman <efriedma@codeaurora•org>
Cc: Joe Perches <joe@perches•com>
Cc: Nick Desaulniers <ndesaulniers@google•com>
Cc: Linus Torvalds <torvalds@linux-foundation•org>
Signed-off-by: Michael S. Tsirkin <mst@redhat•com>
---
include/linux/compiler-clang.h | 5 ++---
include/linux/compiler-gcc.h | 4 ----
include/linux/compiler-intel.h | 4 +---
include/linux/compiler.h | 4 +++-
4 files changed, 6 insertions(+), 11 deletions(-)
diff --git a/include/linux/compiler-clang.h b/include/linux/compiler-clang.h
index 3e7dafb3ea80..7ddaeb5182e3 100644
--- a/include/linux/compiler-clang.h
+++ b/include/linux/compiler-clang.h
@@ -3,9 +3,8 @@
#error "Please don't include <linux/compiler-clang.h> directly, include <linux/compiler.h> instead."
#endif
-/* Some compiler specific definitions are overwritten here
- * for Clang compiler
- */
+/* Compiler specific definitions for Clang compiler */
+
#define uninitialized_var(x) x = *(&(x))
/* same as gcc, this was present in clang-2.6 so we can assume it works
diff --git a/include/linux/compiler-gcc.h b/include/linux/compiler-gcc.h
index 2010493e1040..72054d9f0eaa 100644
--- a/include/linux/compiler-gcc.h
+++ b/include/linux/compiler-gcc.h
@@ -58,10 +58,6 @@
(typeof(ptr)) (__ptr + (off)); \
})
-/* Make the optimizer believe the variable can be manipulated arbitrarily. */
-#define OPTIMIZER_HIDE_VAR(var) \
- __asm__ ("" : "=r" (var) : "0" (var))
-
/*
* A trick to suppress uninitialized variable warning without generating any
* code
diff --git a/include/linux/compiler-intel.h b/include/linux/compiler-intel.h
index 517bd14e1222..b17f3cd18334 100644
--- a/include/linux/compiler-intel.h
+++ b/include/linux/compiler-intel.h
@@ -5,9 +5,7 @@
#ifdef __ECC
-/* Some compiler specific definitions are overwritten here
- * for Intel ECC compiler
- */
+/* Compiler specific definitions for Intel ECC compiler */
#include <asm/intrinsics.h>
diff --git a/include/linux/compiler.h b/include/linux/compiler.h
index 06396c1cf127..1ad367b4cd8d 100644
--- a/include/linux/compiler.h
+++ b/include/linux/compiler.h
@@ -152,7 +152,9 @@ void ftrace_likely_update(struct ftrace_likely_data *f, int val,
#endif
#ifndef OPTIMIZER_HIDE_VAR
-#define OPTIMIZER_HIDE_VAR(var) barrier()
+/* Make the optimizer believe the variable can be manipulated arbitrarily. */
+#define OPTIMIZER_HIDE_VAR(var) \
+ __asm__ ("" : "=r" (var) : "0" (var))
#endif
/* Not-quite-unique ID. */
--
MST
next prev parent reply other threads:[~2019-01-02 20:57 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-01-02 20:57 [PATCH RFC 0/4] barriers using data dependency Michael S. Tsirkin
2019-01-02 20:57 ` Michael S. Tsirkin [this message]
2019-01-08 17:44 ` [PATCH RFC 1/4] include/linux/compiler*.h: fix OPTIMIZER_HIDE_VAR Nick Desaulniers
2019-01-08 18:50 ` Michael S. Tsirkin
2019-01-09 10:35 ` Miguel Ojeda
2019-01-09 10:35 ` Miguel Ojeda
2019-01-09 14:50 ` Michael S. Tsirkin
2019-01-09 14:50 ` Michael S. Tsirkin
2019-01-19 18:35 ` Miguel Ojeda
2019-01-20 14:43 ` Michael S. Tsirkin
2019-01-20 15:36 ` Miguel Ojeda
2019-01-10 2:36 ` Michael S. Tsirkin
2019-01-10 2:36 ` Michael S. Tsirkin
2019-01-10 13:41 ` Dan Carpenter
2019-01-10 13:41 ` Dan Carpenter
2019-01-10 14:08 ` Michael S. Tsirkin
2019-01-10 14:08 ` Michael S. Tsirkin
2019-01-02 20:57 ` [PATCH RFC 2/4] include/linux/compiler.h: allow memory operands Michael S. Tsirkin
2019-01-07 17:54 ` Will Deacon
2019-01-07 18:16 ` Michael S. Tsirkin
2019-01-02 20:57 ` [PATCH RFC 3/4] barriers: convert a control to a data dependency Michael S. Tsirkin
2019-01-02 21:00 ` Matthew Wilcox
2019-01-02 21:24 ` Michael S. Tsirkin
2019-01-07 3:58 ` Jason Wang
2019-01-07 4:23 ` Michael S. Tsirkin
2019-01-07 6:50 ` Jason Wang
2019-01-07 9:46 ` Peter Zijlstra
2019-01-07 13:36 ` Michael S. Tsirkin
2019-01-07 15:54 ` Peter Zijlstra
2019-01-07 16:22 ` Michael S. Tsirkin
2019-01-07 19:02 ` Paul E. McKenney
2019-01-07 19:13 ` Michael S. Tsirkin
2019-01-07 19:25 ` Paul E. McKenney
2019-01-02 20:58 ` [PATCH RFC 4/4] virtio: use dependent_ptr_mb Michael S. Tsirkin
2019-01-02 21:36 ` [PATCH RFC 0/4] barriers using data dependency Alan Stern
2019-01-02 23:04 ` Michael S. Tsirkin
2019-01-03 15:11 ` Alan Stern
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190102205715.14054-2-mst@redhat.com \
--to=mst@redhat$(echo .)com \
--cc=akiyks@gmail$(echo .)com \
--cc=andrea.parri@amarulasolutions$(echo .)com \
--cc=boqun.feng@gmail$(echo .)com \
--cc=dhowells@redhat$(echo .)com \
--cc=dlustig@nvidia$(echo .)com \
--cc=efriedma@codeaurora$(echo .)org \
--cc=j.alglave@ucl$(echo .)ac.uk \
--cc=jasowang@redhat$(echo .)com \
--cc=joe@perches$(echo .)com \
--cc=linux-arch@vger$(echo .)kernel.org \
--cc=linux-kernel@vger$(echo .)kernel.org \
--cc=luc.maranget@inria$(echo .)fr \
--cc=ndesaulniers@google$(echo .)com \
--cc=netdev@vger$(echo .)kernel.org \
--cc=npiggin@gmail$(echo .)com \
--cc=paulmck@linux$(echo .)vnet.ibm.com \
--cc=peterz@infradead$(echo .)org \
--cc=stern@rowland$(echo .)harvard.edu \
--cc=torvalds@linux-foundation$(echo .)org \
--cc=virtualization@lists$(echo .)linux-foundation.org \
--cc=will.deacon@arm$(echo .)com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox