Re: [PATCH] linux/compiler-clang.h: define HAVE_BUILTIN_BSWAP*

From: Nathan Chancellor
Date: Thu Feb 25 2021 - 15:21:02 EST


On Thu, Feb 25, 2021 at 12:14:17PM -0800, Kees Cook wrote:
> On Thu, Feb 25, 2021 at 12:06:37PM -0800, Andrew Morton wrote:
> > On Thu, 25 Feb 2021 12:03:48 -0800 Kees Cook <keescook@xxxxxxxxxxxx> wrote:
> >
> > > On Thu, Feb 25, 2021 at 05:45:09PM +0100, Arnd Bergmann wrote:
> > > > From: Arnd Bergmann <arnd@xxxxxxxx>
> > > >
> > > > 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 <arnd@xxxxxxxx>
> > >
> > > Cc: stable@xxxxxxxxxxxxxxx
> >
> > I figured 4% better compile time isn't significant enough to justify a
> > backport. Thoughts?
>
> It's a trivial change, so I think it's worth it?

Indeed. Any wins that we can get with compile time, we should take.
Clang is being widely used in production systems now so I feel like with
a trivial change plus user visible impact, it should be backported.

Not to mention that the generated code in theory should be better
because it is the compiler's builtin, rather than a hand rolled one, AND
this is technically a regression, given that it worked before compiler.h
was split.

Cheers,
Nathan

> >
> > > Reviewed-by: Kees Cook <keescook@xxxxxxxxxxxx>
> >
>
> --
> Kees Cook