On Thu, 9 May 2024, Chenghui Pan wrote: > Ping. Is this version of patch ok for trunk? thanks!
Yes. I thought I approved the previous version conditional on the change. Richard. > On 2024/3/26 09:54, Chenghui Pan wrote: > > Current document of Tree SSA passes contains many parts that is not > > updated for many years. > > > > This patch removes some info that is outdated and not existed in > > current GCC codebase, and fixes some wrong code location descriptions > > based on current codebase status and ChangeLogs. > > > > Changes since v1: > > * v3: Add reference to related PRs. > > * v2: Add correct info for pass_build_alias. > > > > gcc/ChangeLog: > > > > PR rtl-optimization/951 > > PR tree-optimization/13756 > > * doc/passes.texi: Correction of Tree SSA Passes info. > > --- > > gcc/doc/passes.texi | 75 +++++---------------------------------------- > > 1 file changed, 7 insertions(+), 68 deletions(-) > > > > diff --git a/gcc/doc/passes.texi b/gcc/doc/passes.texi > > index b50d3d5635b..b13ad06c5a9 100644 > > --- a/gcc/doc/passes.texi > > +++ b/gcc/doc/passes.texi > > @@ -450,17 +450,6 @@ The following briefly describes the Tree optimization > > passes that are > > 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 > > > > @@ -478,7 +467,7 @@ described by @code{pass_lower_omp}. > > > > If OpenMP generation (@option{-fopenmp}) is enabled, this pass expands > > parallel regions into their own functions to be invoked by the thread > > -library. The pass is located in @file{omp-low.cc} and is described by > > +library. The pass is located in @file{omp-expand.cc} and is described by > > @code{pass_expand_omp}. > > > > @item Lower control flow > > @@ -511,15 +500,6 @@ This pass decomposes a function into basic blocks and > > creates all of > > 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 > > @@ -562,15 +542,6 @@ variables that are used once into the expression that > > uses them and > > 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 > > @@ -581,12 +552,8 @@ It is located in @file{tree-ssa-phiopt.cc} and is > > described by > > @item May-alias optimization > > > > This pass performs a flow sensitive SSA-based points-to analysis. > > -The resulting may-alias, must-alias, and escape analysis information > > -is used to promote variables from in-memory addressable objects to > > -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}. > > +It is located in @file{tree-ssa-structalias.cc} and is described > > +by @code{pass_build_alias}. > > > > Interprocedural points-to information is located in > > @file{tree-ssa-structalias.cc} and described by @code{pass_ipa_pta}. > > @@ -604,7 +571,7 @@ is described by @code{pass_ipa_tree_profile}. > > This pass implements series of heuristics to guess propababilities > > of branches. The resulting predictions are turned into edge profile > > by propagating branches across the control flow graphs. > > -The pass is located in @file{tree-profile.cc} and is described by > > +The pass is located in @file{predict.cc} and is described by > > @code{pass_profile}. > > > > @item Lower complex arithmetic > > @@ -653,7 +620,7 @@ in @file{tree-ssa-math-opts.cc} and is described by > > @item Full redundancy elimination > > > > This is a simpler form of PRE that only eliminates redundancies that > > -occur on all paths. It is located in @file{tree-ssa-pre.cc} and > > +occur on all paths. It is located in @file{tree-ssa-sccvn.cc} and > > described by @code{pass_fre}. > > > > @item Loop optimization > > @@ -708,7 +675,7 @@ to align the number of iterations, and to align the > > memory accesses in the > > loop. > > The pass is implemented in @file{tree-vectorizer.cc} (the main driver), > > @file{tree-vect-loop.cc} and @file{tree-vect-loop-manip.cc} (loop specific > > parts > > -and general loop utilities), @file{tree-vect-slp} (loop-aware SLP > > +and general loop utilities), @file{tree-vect-slp.cc} (loop-aware SLP > > functionality), @file{tree-vect-stmts.cc}, @file{tree-vect-data-refs.cc} > > and > > @file{tree-vect-slp-patterns.cc} containing the SLP pattern matcher. > > Analysis of data references is in @file{tree-data-ref.cc}. > > @@ -755,10 +722,6 @@ the ``copy-of'' relation. It eliminates redundant > > copies from the > > 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 > > @@ -811,14 +774,6 @@ run last so that we have as much time as possible to > > prove that the > > 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 > > @@ -857,25 +812,9 @@ pass is located in @file{tree-object-size.cc} and is > > described by > > @item Loop invariant motion > > > > This pass removes expensive loop-invariant computations out of loops. > > -The pass is located in @file{tree-ssa-loop.cc} and described by > > +The pass is located in @file{tree-ssa-loop-im.cc} and described by > > @code{pass_lim}. > > > > -@item Loop nest optimizations > > - > > -This is a family of loop transformations that works on loop nests. It > > -includes loop interchange, scaling, skewing and reversal and they are > > -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}. > > - > > @item Unrolling of small loops > > > > This pass completely unrolls loops with few iterations. The pass > > > -- Richard Biener <rguent...@suse.de> SUSE Software Solutions Germany GmbH, Frankenstrasse 146, 90461 Nuernberg, Germany; GF: Ivo Totev, Andrew McDonald, Werner Knoblich; (HRB 36809, AG Nuernberg)