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)

Reply via email to