Differences between revisions 13 and 14
Revision 13 as of 2006-10-13 13:37:08
Size: 2230
Revision 14 as of 2006-10-13 13:37:32
Size: 2232
Deletions are marked like this. Additions are marked like this.
Line 22: Line 22:
 1. The ''pass_forwprop'' (from ''gcc/tree-ssa-forwprop.c'') for ''forward propagation of expressions'' for single use variables  1. The ''pass_forwprop'' (from ''gcc/tree-ssa-forwprop.c'') for '''forward propagation of expressions''' for single use variables

The Middle-End of ["GCC"] performs ["SSA"] based optimizations on ["GIMPLE"], then converts the ["GIMPLE"] to ["RTL"] and does more optimizations. Finally it hands it off the optimized RTL to the ["BackEnd"].

Work has started on performing ["Interprocedural optimizations"] in GCC. See also the ["ipa-branch"] and the -fwhole-program compilation flag (useful when passing a whole program source as several compilation units passed together to the compiler).

middle end passes

The following passes are done on the GIMPLE SSA representation. We are supposing -O2 optimization level (and perhaps more, even -fwhole-program)

See chapter 8 [http://gcc.gnu.org/onlinedocs/gccint/Tree_002dSSA-passes.html Tree-SSA passes] of the GCC internal documentation for an overview

please check and complete this list

  1. Many passes are working on trees before the SSA, in particular for the call flow graph (the pass_build_cfg is building it in file gcc/tree-cfg.c) and tree inlining (pass_ipa_inline in file gcc/ipa-inline.c)

  2. the pass_build_ssa (in file gcc/tree-into-ssa.c) is building the SSA representation

  3. the pass_lower_vector and pass_lower_vector_ssa (file gcc/tree-vect-generic.c) are expanding vector to scalar operations (???)

  4. The pass_may_alias (from gcc/tree-ssa-alias.c) computes may-alias information

  5. The pass_return_slot (from gcc/tree-nrv.c) implements return value optimizations for functions which return aggregate types

  6. The pass_rename_ssa_copies (from gcc/tree-ssa-copyrename.c) implements the SSA copy renaming phase

  7. The pass_fre (from gcc/tree-ssa-pre.c) makes some full redunduncy elimination (?)

  8. The pass_ccp (from gcc/tree-ssa-ccp.c) does conditional constant propagation

  9. The pass_dce (from gcc/tree-ssa-dce.c) for dead code elimination

  10. The pass_forwprop (from gcc/tree-ssa-forwprop.c) for forward propagation of expressions for single use variables

The ["tree folder"] is also considered part of the middle-end, but the ["FrontEnd"]s use it for constant folding also.

None: MiddleEnd (last edited 2008-01-10 19:38:37 by localhost)