gccint: Pass manager
1
1 9.3 Pass manager
1 ================
1
1 The pass manager is located in 'passes.c', 'tree-optimize.c' and
1 'tree-pass.h'. It processes passes as described in 'passes.def'. Its
1 job is to run all of the individual passes in the correct order, and
1 take care of standard bookkeeping that applies to every pass.
1
1 The theory of operation is that each pass defines a structure that
1 represents everything we need to know about that pass--when it should be
1 run, how it should be run, what intermediate language form or
1 on-the-side data structures it needs. We register the pass to be run in
1 some particular order, and the pass manager arranges for everything to
1 happen in the correct order.
1
1 The actuality doesn't completely live up to the theory at present.
1 Command-line switches and 'timevar_id_t' enumerations must still be
1 defined elsewhere. The pass manager validates constraints but does not
1 attempt to (re-)generate data structures or lower intermediate language
1 form based on the requirements of the next pass. Nevertheless, what is
1 present is useful, and a far sight better than nothing at all.
1
1 Each pass should have a unique name. Each pass may have its own dump
1 file (for GCC debugging purposes). Passes with a name starting with a
1 star do not dump anything. Sometimes passes are supposed to share a
1 dump file / option name. To still give these unique names, you can use
1 a prefix that is delimited by a space from the part that is used for the
1 dump file / option name. E.g. When the pass name is "ud dce", the name
1 used for dump file/options is "dce".
1
1 TODO: describe the global variables set up by the pass manager, and a
1 brief description of how a new pass should use it. I need to look at
1 what info RTL passes use first...
1