All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nick Desaulniers <ndesaulniers@google.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: tanzirh@google.com, Kees Cook <keescook@chromium.org>,
	 Andy Shevchenko <andy@kernel.org>,
	linux-hardening@vger.kernel.org,  linux-kernel@vger.kernel.org,
	Nick DeSaulniers <nnn@google.com>,
	llvm@lists.linux.dev
Subject: Re: [PATCH] lib/string: shrink lib/string.i via IWYU
Date: Tue, 5 Dec 2023 13:14:16 -0800	[thread overview]
Message-ID: <CAKwvOdn+VTM+LY6ALcgaZTL57JpiKt5rBPMSPNXsgS3MCENhDQ@mail.gmail.com> (raw)
In-Reply-To: <20231205130449.8e330a26ecbed1f7b5ad5d7a@linux-foundation.org>

On Tue, Dec 5, 2023 at 1:04 PM Andrew Morton <akpm@linux-foundation.org> wrote:
>
> On Tue, 05 Dec 2023 20:58:53 +0000 tanzirh@google.com wrote:
>
> > This diff uses an open source tool include-what-you-use (IWYU) to modify
> > the include list changing indirect includes to direct includes.
> > IWYU is implemented using the IWYUScripts github repository which is a tool that is
> > currently undergoing development. These changes seek to improve build times.
> >
> > This change to lib/string.c resulted in a preprocessed size of
> > lib/string.i from 26371 lines to 5232 lines (-80%).
> >
> > If there are any problems with the output of the tool please raise an
> > issue on the github.
> >
> > Link: https://github.com/ClangBuiltLinux/IWYUScripts
>
> Issue:
>
> > --- a/lib/string.c
> > +++ b/lib/string.c
> > @@ -16,16 +16,16 @@
> >
> >  #define __NO_FORTIFY
> >  #include <linux/types.h>
> > +#include <asm/bitsperlong.h>

Thanks for the quick feedback.  For additional context, Tanzir is my
intern working on getting IWYU working on the kernel.  Welcome Tanzir
to LKML!

>
> The preferred way to import bit-fiddling stuff is to include
> <linux/bits.h>.  Under the hood this may include asm/bitsperlong.h.  Or
> it may not, depending on Kconfig settings (particularly architecture).
>

Just triple checking my understanding; it looks like
include/linux/bits.h unconditionally includes asm/bitsperlong.h (which
is implemented per arch) most of which seem to include
asm-generic/bitsperlong.h.

include/linux/bits.h also defines a few macros (BIT_MASK, BIT_WORD,
BITS_PER_BYTE, GENMASK, etc).  If lib/string.c is not using any of
those, why can't we go straight to #including asm/bitsperlong.h?  That
should resolve to the arch specific impl which may include
asm-generic/bitsperlong.h?
-- 
Thanks,
~Nick Desaulniers

  reply	other threads:[~2023-12-05 21:14 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-12-05 20:58 [PATCH] lib/string: shrink lib/string.i via IWYU tanzirh
2023-12-05 21:04 ` Andrew Morton
2023-12-05 21:14   ` Nick Desaulniers [this message]
2023-12-05 21:24     ` Andrew Morton
2023-12-05 21:39       ` Nick Desaulniers
2023-12-05 21:43         ` Al Viro
2023-12-05 21:57           ` Nick Desaulniers
2023-12-11 20:47           ` Nick Desaulniers
2023-12-11 20:50             ` Andy Shevchenko
2023-12-05 21:53         ` Andy Shevchenko
2023-12-05 22:05           ` Nick Desaulniers
2023-12-07  6:25         ` Christoph Hellwig
2023-12-05 21:38 ` Al Viro
2023-12-05 21:51   ` Nick Desaulniers
2023-12-05 21:59     ` Greg KH
2023-12-05 22:14       ` Nick Desaulniers
2023-12-05 23:46         ` Greg KH
2023-12-06  0:55           ` Al Viro
2023-12-06  3:00             ` Al Viro
2023-12-06  3:09               ` Greg KH
2023-12-14 21:04                 ` Al Viro
2023-12-15 21:03                   ` Al Viro
2023-12-07 12:50         ` Andy Shevchenko
2023-12-05 22:01     ` Andy Shevchenko
2023-12-05 22:10       ` Randy Dunlap
2023-12-05 22:25         ` Nick Desaulniers
2023-12-05 22:15       ` Al Viro
2023-12-05 22:20         ` Nick Desaulniers
2023-12-05 22:32         ` Al Viro
2023-12-07 12:52         ` Andy Shevchenko
2023-12-05 21:57   ` Al Viro
2023-12-05 21:50 ` Andy Shevchenko
2023-12-05 22:05 ` Andy Shevchenko
2023-12-06  7:10 ` kernel test robot
2023-12-07 12:55   ` Andy Shevchenko

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=CAKwvOdn+VTM+LY6ALcgaZTL57JpiKt5rBPMSPNXsgS3MCENhDQ@mail.gmail.com \
    --to=ndesaulniers@google.com \
    --cc=akpm@linux-foundation.org \
    --cc=andy@kernel.org \
    --cc=keescook@chromium.org \
    --cc=linux-hardening@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=llvm@lists.linux.dev \
    --cc=nnn@google.com \
    --cc=tanzirh@google.com \
    /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.