Mercurial > hg > CbC > CbC_gcc
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 |