diff options
author | Richard Biener <rguenther@suse.de> | 2019-11-25 07:51:38 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2019-11-25 07:51:38 +0000 |
commit | f10d2d85c90c9c649675c248cd5a99f66288f81f (patch) | |
tree | 284bcf852c57a2fa1c05c83c5138e1553cc14a03 /gcc/tree-ssa-loop-niter.h | |
parent | 5a34952edb758109a3b919bc149136ee9277ee3a (diff) | |
download | gcc-f10d2d85c90c9c649675c248cd5a99f66288f81f.zip gcc-f10d2d85c90c9c649675c248cd5a99f66288f81f.tar.gz gcc-f10d2d85c90c9c649675c248cd5a99f66288f81f.tar.bz2 |
cfgloop.h (get_loop_exit_edges): Add extra parameter denoting loop body, defaulted to NULL.
2019-11-25 Richard Biener <rguenther@suse.de>
* cfgloop.h (get_loop_exit_edges): Add extra parameter denoting
loop body, defaulted to NULL.
(single_likely_exit): Add exit vector argument
* tree-ssa-loop-niter.h (loop_only_exit_p): Add loop body argument.
(number_of_iterations_exit): Likewise.
(number_of_iterations_exit_assumptions): Likewise.
* cfgloop.c (get_loop_exit_edges): Use passed in loop body
if not NULL.
* cfgloopanal.c (single_likely_exit): Use passed in exit vector.
* tree-ssa-loop-ivcanon.c (canonicalize_loop_induction_variables):
Compute exit vector around call to single_likely_exit.
* tree-ssa-loop-ivopts.c (tree_ssa_iv_optimize_loop): Pass down
loop body to loop_only_exit_p.
* tree-ssa-loop-niter.c (loop_only_exit_p): Get loop body from
caller.
(number_of_iterations_exit_assumptions): Get loop body from caller
if not NULL.
(number_of_iterations_exit): Pass through new loop body arg.
(infer_loop_bounds_from_undefined): Get loop body from caller.
(estimate_numbers_of_iterations): Compute loop body once.
From-SVN: r278667
Diffstat (limited to 'gcc/tree-ssa-loop-niter.h')
-rw-r--r-- | gcc/tree-ssa-loop-niter.h | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/gcc/tree-ssa-loop-niter.h b/gcc/tree-ssa-loop-niter.h index aec6225..742d3b8 100644 --- a/gcc/tree-ssa-loop-niter.h +++ b/gcc/tree-ssa-loop-niter.h @@ -22,13 +22,16 @@ along with GCC; see the file COPYING3. If not see extern tree expand_simple_operations (tree, tree = NULL); extern tree simplify_using_initial_conditions (class loop *, tree); -extern bool loop_only_exit_p (const class loop *, const_edge); +extern bool loop_only_exit_p (const class loop *, basic_block *body, + const_edge); extern bool number_of_iterations_exit (class loop *, edge, class tree_niter_desc *niter, bool, - bool every_iteration = true); + bool every_iteration = true, + basic_block * = NULL); extern bool number_of_iterations_exit_assumptions (class loop *, edge, class tree_niter_desc *, - gcond **, bool = true); + gcond **, bool = true, + basic_block * = NULL); extern tree find_loop_niter (class loop *, edge *); extern bool finite_loop_p (class loop *); extern tree loop_niter_by_eval (class loop *, edge); |