This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [RFC] Cleaning up the pass manager
- From: Basile Starynkevitch <basile at starynkevitch dot net>
- To: Jan Hubicka <hubicka at ucw dot cz>
- Cc: Diego Novillo <dnovillo at google dot com>, gcc-patches at gcc dot gnu dot org, gcc at gcc dot gnu dot org
- Date: Tue, 15 Jun 2010 19:01:51 +0200
- Subject: Re: [RFC] Cleaning up the pass manager
- References: <AANLkTik3WEokk13mY66wEXlZjnob1URPBMql8IrQdUoh@mail.gmail.com> <20100615163844.GD10161@atrey.karlin.mff.cuni.cz>
- Reply-to: basile at starynkevitch dot net
On Tue, 2010-06-15 at 18:38 +0200, Jan Hubicka wrote:
Citing Diego Novillo:
> > I have been thinking about doing some cleanups to the pass manager.
> This has been my goal for years, but somehow it always got off the top of
> TODO list ;)
> >
> > Additionally, I would like to (at some point) incorporate some/most of
> > the functionality provided by ICI
> > (http://ctuning.org/wiki/index.php/CTools:ICI). I'm not advocating
> > for integrating all of ICI, but leave enough hooks so such
> > experimentations are easier to do.
Good.
> >
> > Initially, I'm going for some low hanging fruit:
> >
> > - Fields properties_required, properties_provided and
> > properties_destroyed should Mean Something other than asserting
> > whether they exist.
> > - Whatever doesn't exist before a pass, needs to be computed.
> > - Pass scheduling can be done by simply declaring a pass and
> > presenting it to the pass manager. The property sets should be enough
> > for the PM to know where to schedule a pass.
> > - dump_file and dump_flags are no longer globals.
>
> One thing I would like to see (i.e. plan to add once I have time for it)
> is to commonize normal<O&WHOPR queues.
> At the moment WHOPR WPA somehow stands away and LTO is implemented by breaking
> up the previously continuous pass queue into pieces.
I would also suggest a tiny incremental progress in documentation.
Perhaps it could be as simple as suggesting a common comment template
for passes. Also, some more conventions could be helpful, for example
that each pass is named FOO_pass and its name field should be "FOO" or
"*FOO"
What I still don't understand well are simple things like:
what is the name (in the opt_pass sense) of a given pass?
what are the passes providing a valid cfun?
what are the passes keeping the function-s?
etc.
I believe that a structured comment could help. When - in many
years :-( - the powerful people (Steering Committee, FSF, RMS, ...)
would accept the idea of generating documentation from code [and
implement the legalese allowing it thru appropriate exceptions, or legal
notices, or licenses], we could even imagine have an automatically
generated chapter documenting the passes. We could also imagine a
Graphviz *.dot file describing the graph of all passes.
Cheers!
--
Basile STARYNKEVITCH http://starynkevitch.net/Basile/
email: basile<at>starynkevitch<dot>net mobile: +33 6 8501 2359
8, rue de la Faiencerie, 92340 Bourg La Reine, France
*** opinions {are only mines, sont seulement les miennes} ***