On Thu, Feb 25, 2021 at 05:45:09PM +0100, Arnd Bergmann wrote: > From: Arnd Bergmann <a...@arndb.de> > > Separating compiler-clang.h from compiler-gcc.h inadventently dropped the > definitions of the three HAVE_BUILTIN_BSWAP macros, which requires falling > back to the open-coded version and hoping that the compiler detects it. > > Since all versions of clang support the __builtin_bswap interfaces, > add back the flags and have the headers pick these up automatically. > > This results in a 4% improvement of compilation speed for arm defconfig. > > Fixes: 815f0ddb346c ("include/linux/compiler*.h: make compiler-*.h mutually > exclusive") > Signed-off-by: Arnd Bergmann <a...@arndb.de>
Reviewed-by: Nathan Chancellor <nat...@kernel.org> > --- > include/linux/compiler-clang.h | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/include/linux/compiler-clang.h b/include/linux/compiler-clang.h > index 6478bff6fcc2..bbfa9ff6a2ec 100644 > --- a/include/linux/compiler-clang.h > +++ b/include/linux/compiler-clang.h > @@ -33,6 +33,16 @@ > #define __no_sanitize_thread > #endif > > +/* > + * sparse (__CHECKER__) pretends to be gcc, but can't do constant > + * folding in __builtin_bswap*() (yet), so don't set these for it. > + */ > +#if defined(CONFIG_ARCH_USE_BUILTIN_BSWAP) && !defined(__CHECKER__) > +#define __HAVE_BUILTIN_BSWAP32__ > +#define __HAVE_BUILTIN_BSWAP64__ > +#define __HAVE_BUILTIN_BSWAP16__ > +#endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP && !__CHECKER__ */ > + > #if __has_feature(undefined_behavior_sanitizer) > /* GCC does not have __SANITIZE_UNDEFINED__ */ > #define __no_sanitize_undefined \ > -- > 2.29.2 >