From: Peter Zijlstra <peterz@infradead.org>
To: Marco Elver <elver@google.com>
Cc: Arnd Bergmann <arnd@arndb.de>, Will Deacon <will@kernel.org>,
Nick Desaulniers <ndesaulniers@google.com>,
"Paul E. McKenney" <paulmck@kernel.org>,
Dmitry Vyukov <dvyukov@google.com>,
Alexander Potapenko <glider@google.com>,
Andrey Konovalov <andreyknvl@google.com>,
kasan-dev <kasan-dev@googlegroups.com>,
LKML <linux-kernel@vger.kernel.org>,
Thomas Gleixner <tglx@linutronix.de>,
Ingo Molnar <mingo@kernel.org>,
clang-built-linux <clang-built-linux@googlegroups.com>,
Borislav Petkov <bp@alien8.de>
Subject: Re: [PATCH -tip v3 09/11] data_race: Avoid nested statement expression
Date: Tue, 26 May 2020 23:36:01 +0200 [thread overview]
Message-ID: <20200526213601.GF2483@worktop.programming.kicks-ass.net> (raw)
In-Reply-To: <20200526173312.GA30240@google.com>
On Tue, May 26, 2020 at 07:33:12PM +0200, Marco Elver wrote:
> diff --git a/include/linux/compiler_types.h b/include/linux/compiler_types.h
> index 5faf68eae204..a529fa263906 100644
> --- a/include/linux/compiler_types.h
> +++ b/include/linux/compiler_types.h
> @@ -245,7 +245,9 @@ struct ftrace_likely_data {
> /*
> * __unqual_scalar_typeof(x) - Declare an unqualified scalar type, leaving
> * non-scalar types unchanged.
> - *
> + */
> +#if defined(CONFIG_CC_IS_GCC) && CONFIG_GCC_VERSION < 40900
> +/*
> * We build this out of a couple of helper macros in a vain attempt to
> * help you keep your lunch down while reading it.
> */
> @@ -267,6 +269,24 @@ struct ftrace_likely_data {
> __pick_integer_type(x, int, \
> __pick_integer_type(x, long, \
> __pick_integer_type(x, long long, x))))))
> +#else
> +/*
> + * If supported, prefer C11 _Generic for better compile-times. As above, 'char'
> + * is not type-compatible with 'signed char', and we define a separate case.
> + */
> +#define __scalar_type_to_expr_cases(type) \
> + type: (type)0, unsigned type: (unsigned type)0
> +
> +#define __unqual_scalar_typeof(x) typeof( \
> + _Generic((x), \
> + __scalar_type_to_expr_cases(char), \
> + signed char: (signed char)0, \
> + __scalar_type_to_expr_cases(short), \
> + __scalar_type_to_expr_cases(int), \
> + __scalar_type_to_expr_cases(long), \
> + __scalar_type_to_expr_cases(long long), \
> + default: (x)))
> +#endif
>
> /* Is this type a native word size -- useful for atomic operations */
> #define __native_word(t) \
>
Yeah, this shaves around 5% off of my kernel builds. The _Atomic hack is
every so slightly faster on GCC but apparently doesn't work on clang --
also, it's disguisting :-)
Ack!
next prev parent reply other threads:[~2020-05-26 21:36 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-21 14:20 [PATCH -tip v3 00/11] Fix KCSAN for new ONCE (require Clang 11) Marco Elver
2020-05-21 14:20 ` [PATCH -tip v3 01/11] ubsan, kcsan: don't combine sanitizer with kcov on clang Marco Elver
2020-05-21 14:20 ` [PATCH -tip v3 02/11] kcsan: Avoid inserting __tsan_func_entry/exit if possible Marco Elver
2020-05-22 16:08 ` [tip: locking/kcsan] " tip-bot2 for Marco Elver
2020-05-21 14:20 ` [PATCH -tip v3 03/11] kcsan: Support distinguishing volatile accesses Marco Elver
2020-05-22 10:26 ` Borislav Petkov
2020-05-22 10:34 ` Marco Elver
2020-05-22 10:47 ` Borislav Petkov
2020-05-22 16:08 ` [tip: locking/kcsan] " tip-bot2 for Marco Elver
2020-05-21 14:20 ` [PATCH -tip v3 04/11] kcsan: Pass option tsan-instrument-read-before-write to Clang Marco Elver
2020-05-22 16:08 ` [tip: locking/kcsan] " tip-bot2 for Marco Elver
2020-05-21 14:20 ` [PATCH -tip v3 05/11] kcsan: Remove 'noinline' from __no_kcsan_or_inline Marco Elver
2020-05-29 17:07 ` Peter Zijlstra
2020-05-29 18:36 ` Marco Elver
2020-05-29 18:59 ` Peter Zijlstra
2020-05-21 14:20 ` [PATCH -tip v3 06/11] kcsan: Restrict supported compilers Marco Elver
2020-05-21 14:20 ` [PATCH -tip v3 07/11] kcsan: Update Documentation to change " Marco Elver
2020-05-22 16:08 ` [tip: locking/kcsan] " tip-bot2 for Marco Elver
2020-05-21 14:20 ` [PATCH -tip v3 08/11] READ_ONCE, WRITE_ONCE: Remove data_race() and unnecessary checks Marco Elver
2020-05-22 16:08 ` [tip: locking/kcsan] compiler.h: Remove data_race() and unnecessary checks from {READ,WRITE}_ONCE() tip-bot2 for Marco Elver
2020-05-21 14:20 ` [PATCH -tip v3 09/11] data_race: Avoid nested statement expression Marco Elver
2020-05-21 20:21 ` Nick Desaulniers
2020-05-26 10:42 ` Arnd Bergmann
2020-05-26 12:02 ` Will Deacon
2020-05-26 12:19 ` Arnd Bergmann
2020-05-26 13:12 ` Marco Elver
2020-05-26 17:33 ` Marco Elver
2020-05-26 19:00 ` Arnd Bergmann
2020-05-26 23:10 ` Arnd Bergmann
2020-05-27 7:22 ` Will Deacon
2020-05-27 7:44 ` Marco Elver
2020-05-27 9:26 ` Arnd Bergmann
2020-05-28 12:53 ` Stephen Rothwell
2020-05-26 21:36 ` Peter Zijlstra [this message]
2020-05-21 14:20 ` [PATCH -tip v3 10/11] compiler.h: Move function attributes to compiler_types.h Marco Elver
2020-05-22 16:08 ` [tip: locking/kcsan] " tip-bot2 for Marco Elver
2020-05-21 14:20 ` [PATCH -tip v3 11/11] compiler_types.h, kasan: Use __SANITIZE_ADDRESS__ instead of CONFIG_KASAN to decide inlining Marco Elver
2020-05-22 16:08 ` [tip: locking/kcsan] " tip-bot2 for Marco Elver
2020-05-22 11:35 ` [PATCH -tip v3 00/11] Fix KCSAN for new ONCE (require Clang 11) Peter Zijlstra
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=20200526213601.GF2483@worktop.programming.kicks-ass.net \
--to=peterz@infradead.org \
--cc=andreyknvl@google.com \
--cc=arnd@arndb.de \
--cc=bp@alien8.de \
--cc=clang-built-linux@googlegroups.com \
--cc=dvyukov@google.com \
--cc=elver@google.com \
--cc=glider@google.com \
--cc=kasan-dev@googlegroups.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=ndesaulniers@google.com \
--cc=paulmck@kernel.org \
--cc=tglx@linutronix.de \
--cc=will@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.