run after gimplification and what source files they are located in.
@itemize @bullet
-@item Remove useless statements
-
-This pass is an extremely simple sweep across the gimple code in which
-we identify obviously dead code and remove it. Here we do things like
-simplify @code{if} statements with constant conditions, remove
-exception handling constructs surrounding code that obviously cannot
-throw, remove lexical bindings that contain no variables, and other
-assorted simplistic cleanups. The idea is to get rid of the obvious
-stuff quickly rather than wait until later when it's more work to get
-rid of it. This pass is located in @file{tree-cfg.cc} and described by
-@code{pass_remove_useless_stmts}.
-
@item OpenMP lowering
If OpenMP generation (@option{-fopenmp}) is enabled, this pass lowers
the edges that connect them. It is located in @file{tree-cfg.cc} and
is described by @code{pass_build_cfg}.
-@item Find all referenced variables
-
-This pass walks the entire function and collects an array of all
-variables referenced in the function, @code{referenced_vars}. The
-index at which a variable is found in the array is used as a UID
-for the variable within this function. This data is needed by the
-SSA rewriting routines. The pass is located in @file{tree-dfa.cc}
-and is described by @code{pass_referenced_vars}.
-
@item Enter static single assignment form
This pass rewrites the function such that it is in SSA form. After
@code{SSA_NAME}, and all occurrences of other variables will be
annotated with @code{VDEFS} and @code{VUSES}; PHI nodes will have
been inserted as necessary for each basic block. This pass is
-located in @file{tree-ssa.cc} and is described by @code{pass_build_ssa}.
+located in @file{tree-into-ssa.cc} and is described by @code{pass_build_ssa}.
@item Warn for uninitialized variables
uses are uninitialized. The pass is run twice, before and after
optimization (if turned on). In the first pass we only warn for uses that are
positively uninitialized; in the second pass we warn for uses that
-are possibly uninitialized. The pass is located in @file{tree-ssa.cc}
+are possibly uninitialized. The pass is located in @file{tree-ssa-uninit.cc}
and is defined by @code{pass_early_warn_uninitialized} and
@code{pass_late_warn_uninitialized}.
seeing if the result can be simplified. It is located in
@file{tree-ssa-forwprop.cc} and is described by @code{pass_forwprop}.
-@item Copy Renaming
-
-This pass attempts to change the name of compiler temporaries involved in
-copy operations such that SSA->normal can coalesce the copy away. When compiler
-temporaries are copies of user variables, it also renames the compiler
-temporary to the user variable resulting in better use of user symbols. It is
-located in @file{tree-ssa-copyrename.c} and is described by
-@code{pass_copyrename}.
-
@item PHI node optimizations
This pass recognizes forms of PHI inputs that can be represented as
non-aliased variables that can be renamed into SSA form. We also
update the @code{VDEF}/@code{VUSE} memory tags for non-renameable
aggregates so that we get fewer false kills. The pass is located
-in @file{tree-ssa-alias.cc} and is described by @code{pass_may_alias}.
+in @file{tree-ssa-structalias.cc} and is described by @code{pass_may_alias}.
-Interprocedural points-to information is located in
-@file{tree-ssa-structalias.cc} and described by @code{pass_ipa_pta}.
+Interprocedural points-to information is described by @code{pass_ipa_pta}.
@item Profiling
performing load motion. The pass is located in @file{tree-ssa-pre.cc}
and is described by @code{pass_pre}.
-Just before partial redundancy elimination, if
-@option{-funsafe-math-optimizations} is on, GCC tries to convert
+@item CSE of reciprocals
+
+If @option{-funsafe-math-optimizations} is on, GCC tries to convert
divisions to multiplications by the reciprocal. The pass is located
in @file{tree-ssa-math-opts.cc} and is described by
@code{pass_cse_reciprocal}.
The pass is located in @file{tree-ssa-ccp.cc} and is described
by @code{pass_ccp}.
-A related pass that works on memory loads and stores, and not just
-register values, is located in @file{tree-ssa-ccp.cc} and described by
-@code{pass_store_ccp}.
-
@item Conditional copy propagation
This is similar to constant propagation but the lattice of values is
code. The pass is located in @file{tree-ssa-copy.cc} and described by
@code{pass_copy_prop}.
-A related pass that works on memory copies, and not just register
-copies, is located in @file{tree-ssa-copy.cc} and described by
-@code{pass_store_copy_prop}.
-
@item Value range propagation
This transformation is similar to constant propagation but
statement is not reachable. It is located in @file{tree-cfg.cc} and
is described by @code{pass_warn_function_return}.
-@item Leave static single assignment form
-
-This pass rewrites the function such that it is in normal form. At
-the same time, we eliminate as many single-use temporaries as possible,
-so the intermediate language is no longer GIMPLE, but GENERIC@. The
-pass is located in @file{tree-outof-ssa.cc} and is described by
-@code{pass_del_ssa}.
-
@item Merge PHI nodes that feed into one another
This is part of the CFG cleanup passes. It attempts to join PHI nodes
all geared to the optimization of data locality in array traversals
and the removal of dependencies that hamper optimizations such as loop
parallelization and vectorization. The pass is located in
-@file{tree-loop-linear.c} and described by
-@code{pass_linear_transform}.
-
-@item Removal of empty loops
-
-This pass removes loops with no code in them. The pass is located in
-@file{tree-ssa-loop-ivcanon.cc} and described by
-@code{pass_empty_loop}.
+the @file{graphile-*.cc} files and described by
+@code{pass_graphite}.
@item Unrolling of small loops