diff options
author | Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> | 2004-07-10 06:57:58 +0200 |
---|---|---|
committer | Zdenek Dvorak <rakdver@gcc.gnu.org> | 2004-07-10 04:57:58 +0000 |
commit | a7e5372d6a8e2f12b6d9a15f71d5ad0794e6507f (patch) | |
tree | 7fd5b8c64fe84e6fadd94b6c98bdd7f62f3789a2 /gcc/doc/passes.texi | |
parent | ad6e2a18c2013863e1cf448471e1fa243403eb50 (diff) | |
download | gcc-a7e5372d6a8e2f12b6d9a15f71d5ad0794e6507f.zip gcc-a7e5372d6a8e2f12b6d9a15f71d5ad0794e6507f.tar.gz gcc-a7e5372d6a8e2f12b6d9a15f71d5ad0794e6507f.tar.bz2 |
tree-ssa-loop-im.c: New file.
* tree-ssa-loop-im.c: New file.
* Makefile.in (tree-ssa-loop-im.o): Add.
* cfgloop.c (superloop_at_depth): New function.
* cfgloop.h (superloop_at_depth): Declare.
* common.opt (ftree-lim): New flag.
* expr.c (array_ref_up_bound): New function.
* params.def (PARAM_LIM_EXPENSIVE): New parameter.
* timevar.def (TV_LIM): New timevar.
* tree-dfa.c (compute_immediate_uses): Respect TDFA_USE flags when
computing immediate uses of a phi node.
* tree-flow.h (struct tree_ann_common_d): Add aux field.
(loop_commit_inserts, for_each_index, tree_ssa_lim): Declare.
* tree-optimize.c (init_tree_optimization_passes): Add pass_lim.
* tree-pass.h (pass_lim): Declare.
* tree-ssa-loop.c (tree_ssa_loop_im, gate_tree_ssa_loop_im): New
functions.
(pass_lim): New pass structure.
* tree-eh.c (tree_could_trap_p): Handle ARRAY_REFs correctly.
* tree.c (in_array_bounds_p): New function.
* tree.h (TREE_THIS_NOTRAP): Define also for ARRAY_REFs.
(in_array_bounds_p, array_ref_up_bound): Declare.
* doc/invoke.texi (-ftree-lim, --param lim-expensive): Document.
* doc/passes.texi (tree-ssa-loop-im.c): Document.
From-SVN: r84441
Diffstat (limited to 'gcc/doc/passes.texi')
-rw-r--r-- | gcc/doc/passes.texi | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/gcc/doc/passes.texi b/gcc/doc/passes.texi index 94b9ae5..9867e732 100644 --- a/gcc/doc/passes.texi +++ b/gcc/doc/passes.texi @@ -363,9 +363,20 @@ and is described by @code{pass_pre}. @item Loop optimization -TODO: Presumably we're going to do something with loops here. At -present we don't, and this is a placeholder. The pass is located -in @file{tree-ssa-loop.c} and is described by @code{pass_loop}. +The main driver of the pass is placed in @file{tree-ssa-loop.c} +and described by @code{pass_loop}. + +The optimizations performed by this pass are: + +Loop invariant motion. This pass moves only invariants that +would be hard to handle on rtl level (function calls, operations that expand to +nontrivial sequences of insns). With @option{-funswitch-loops} it also moves +operands of conditions that are invariant out of the loop, so that we can use +just trivial invariantness analysis in loop unswitching. The pass also includes +store motion. The pass is implemented in @file{tree-ssa-loop-im.c}. + +The optimizations also use various utility functions contained in +@file{cfgloop.c}, @file{cfgloopanal.c} and @file{cfgloopmanip.c}. @item Conditional constant propagation |