comparison gcc/doc/passes.texi @ 55:77e2b8dfacca gcc-4.4.5

update it from 4.4.3 to 4.5.0
author ryoma <e075725@ie.u-ryukyu.ac.jp>
date Fri, 12 Feb 2010 23:39:51 +0900
parents 58ad6c70ea60
children f6334be47118
comparison
equal deleted inserted replaced
52:c156f1bd5cd9 55:77e2b8dfacca
164 be defined elsewhere. The pass manager validates constraints but does 164 be defined elsewhere. The pass manager validates constraints but does
165 not attempt to (re-)generate data structures or lower intermediate 165 not attempt to (re-)generate data structures or lower intermediate
166 language form based on the requirements of the next pass. Nevertheless, 166 language form based on the requirements of the next pass. Nevertheless,
167 what is present is useful, and a far sight better than nothing at all. 167 what is present is useful, and a far sight better than nothing at all.
168 168
169 Each pass should have a unique name.
169 Each pass may have its own dump file (for GCC debugging purposes). 170 Each pass may have its own dump file (for GCC debugging purposes).
170 Passes without any names, or with a name starting with a star, do not 171 Passes with a name starting with a star do not dump anything.
171 dump anything. 172 Sometimes passes are supposed to share a dump file / option name.
173 To still give these unique names, you can use a prefix that is delimited
174 by a space from the part that is used for the dump file / option name.
175 E.g. When the pass name is "ud dce", the name used for dump file/options
176 is "dce".
172 177
173 TODO: describe the global variables set up by the pass manager, 178 TODO: describe the global variables set up by the pass manager,
174 and a brief description of how a new pass should use it. 179 and a brief description of how a new pass should use it.
175 I need to look at what info RTL passes use first@enddots{} 180 I need to look at what info RTL passes use first@enddots{}
176 181
295 300
296 @item Dominator optimizations 301 @item Dominator optimizations
297 302
298 This pass performs trivial dominator-based copy and constant propagation, 303 This pass performs trivial dominator-based copy and constant propagation,
299 expression simplification, and jump threading. It is run multiple times 304 expression simplification, and jump threading. It is run multiple times
300 throughout the optimization process. It it located in @file{tree-ssa-dom.c} 305 throughout the optimization process. It is located in @file{tree-ssa-dom.c}
301 and is described by @code{pass_dominator}. 306 and is described by @code{pass_dominator}.
302 307
303 @item Forward propagation of single-use variables 308 @item Forward propagation of single-use variables
304 309
305 This pass attempts to remove redundant computation by substituting 310 This pass attempts to remove redundant computation by substituting
436 on them in parallel. Depending on available target support the loop is 441 on them in parallel. Depending on available target support the loop is
437 conceptually unrolled by a factor @code{VF} (vectorization factor), which is 442 conceptually unrolled by a factor @code{VF} (vectorization factor), which is
438 the number of elements operated upon in parallel in each iteration, and the 443 the number of elements operated upon in parallel in each iteration, and the
439 @code{VF} copies of each scalar operation are fused to form a vector operation. 444 @code{VF} copies of each scalar operation are fused to form a vector operation.
440 Additional loop transformations such as peeling and versioning may take place 445 Additional loop transformations such as peeling and versioning may take place
441 to align the number of iterations, and to align the memory accesses in the loop. 446 to align the number of iterations, and to align the memory accesses in the
442 The pass is implemented in @file{tree-vectorizer.c} (the main driver and general 447 loop.
443 utilities), @file{tree-vect-analyze.c} and @file{tree-vect-transform.c}. 448 The pass is implemented in @file{tree-vectorizer.c} (the main driver),
449 @file{tree-vect-loop.c} and @file{tree-vect-loop-manip.c} (loop specific parts
450 and general loop utilities), @file{tree-vect-slp} (loop-aware SLP
451 functionality), @file{tree-vect-stmts.c} and @file{tree-vect-data-refs.c}.
444 Analysis of data references is in @file{tree-data-ref.c}. 452 Analysis of data references is in @file{tree-data-ref.c}.
453
454 SLP Vectorization. This pass performs vectorization of straight-line code. The
455 pass is implemented in @file{tree-vectorizer.c} (the main driver),
456 @file{tree-vect-slp.c}, @file{tree-vect-stmts.c} and
457 @file{tree-vect-data-refs.c}.
445 458
446 Autoparallelization. This pass splits the loop iteration space to run 459 Autoparallelization. This pass splits the loop iteration space to run
447 into several threads. The pass is implemented in @file{tree-parloops.c}. 460 into several threads. The pass is implemented in @file{tree-parloops.c}.
461
462 Graphite is a loop transformation framework based on the polyhedral
463 model. Graphite stands for Gimple Represented as Polyhedra. The
464 internals of this infrastructure are documented in
465 @w{@uref{http://gcc.gnu.org/wiki/Graphite}}. The passes working on
466 this representation are implemented in the various @file{graphite-*}
467 files.
448 468
449 @item Tree level if-conversion for vectorizer 469 @item Tree level if-conversion for vectorizer
450 470
451 This pass applies if-conversion to simple loops to help vectorizer. 471 This pass applies if-conversion to simple loops to help vectorizer.
452 We identify if convertible loops, if-convert statements and merge 472 We identify if convertible loops, if-convert statements and merge