public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: Manoj Gupta <manojgupta@google.com>
To: Simon Marchi <simark@simark.ca>
Cc: Pedro Alves <pedro@palves.net>,
	Christopher Di Bella <cjdb@google.com>,
	gdb-patches@sourceware.org
Subject: Re: [PATCH] [PATCH] [gdb] adds several headers to the include list
Date: Tue, 26 Jul 2022 16:45:01 -0700	[thread overview]
Message-ID: <CAH=QcshehgdNYBpU381ZxOgq_05DQ4MqQpEy6ARJ0OkyiBGfJw@mail.gmail.com> (raw)
In-Reply-To: <5035eff4-c960-3770-cf1a-eddb2301792f@simark.ca>

On Fri, Jul 22, 2022 at 12:26 PM Simon Marchi <simark@simark.ca> wrote:

>
> > On Thu, Jul 21, 2022 at 10:41 AM Pedro Alves <pedro@palves.net <mailto:
> pedro@palves.net>> wrote:
> >
> >     > diff --git a/gdb/value.c b/gdb/value.c
> >     > index 022fca91a42..c9bec678d95 100644
> >     > --- a/gdb/value.c
> >     > +++ b/gdb/value.c
> >     > @@ -40,6 +40,9 @@
> >     >  #include "cp-abi.h"
> >     >  #include "user-regs.h"
> >     >  #include <algorithm>
> >     > +#include <iterator>
> >     > +#include <utility>
> >     > +#include <vector>
> >
> >     It seems to me that <vector> should have beeen included in the
> header (value.h):
> >
> >      $ grep std::vector value.h
> >                                      std::vector<value_ref_ptr>
> *val_chain,
> >      extern std::vector<value_ref_ptr> value_release_to_mark
> >
> > This looks like a pervasive thing in the gdb codebase.
> > I just quickly grepped for '#include <vector>' for files that have a
> "std::vector" in the gdb codebase .
> >
> > There are 200+ files that use std::vector but do not include <vector>
> i.e. they rely on a transitive include through other headers.
> >
> > Thanks,
> > Manoj
>
>
> Indeed, ideally every file would include what it uses.  I don't know
> about you, but I don't see that as a big problem though.  The worst that
> can happen is that you need to fix some includes when shuffling things.
> I don't think that a file relying on a transitive include can lead to
> some wrong behavior.
>
> I think the opposite is more annoying though, files including headers
> they no longer need to.  Let's say foo.c unnecessarily includes
> breakpoint.h, then when changing breakpoint.h, foo.c will unnecessarily
> get re-built.  I sometimes run some files through include-what-you-use
> [1] and remove the includes it tells me are unnecessary.
> Unfortunately, it only works for main source files, it won't tell you
> that foo.h unnecessarily includes bar.h.  It might be possible to get it
> to work by trying to compile foo.h as a main source file, but that's not
> really possible in our context, with how things are done currently.
>
> I do agree that including unneeded headers is also annoying.
In large projects like Chromium, headers bloat can significantly increase
build times
and is not easy to find out the extraneous ones.

That said, iwyu is a great tool if it can be made to work.


Simon
>
> [1] https://github.com/include-what-you-use/include-what-you-use
>

      reply	other threads:[~2022-07-26 23:45 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-20  6:01 Christopher Di Bella
2022-07-20  6:04 ` Christopher Di Bella
2022-07-20 14:21 ` Simon Marchi
2022-07-20 15:42   ` Christopher Di Bella
2022-07-21 17:41     ` Pedro Alves
2022-07-22 18:46       ` Manoj Gupta
2022-07-22 19:26         ` Simon Marchi
2022-07-26 23:45           ` Manoj Gupta [this message]

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='CAH=QcshehgdNYBpU381ZxOgq_05DQ4MqQpEy6ARJ0OkyiBGfJw@mail.gmail.com' \
    --to=manojgupta@google.com \
    --cc=cjdb@google.com \
    --cc=gdb-patches@sourceware.org \
    --cc=pedro@palves.net \
    --cc=simark@simark.ca \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).