From f10d2d85c90c9c649675c248cd5a99f66288f81f Mon Sep 17 00:00:00 2001 From: Richard Biener Date: Mon, 25 Nov 2019 07:51:38 +0000 Subject: cfgloop.h (get_loop_exit_edges): Add extra parameter denoting loop body, defaulted to NULL. 2019-11-25 Richard Biener * 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 --- gcc/cfgloopanal.c | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) (limited to 'gcc/cfgloopanal.c') diff --git a/gcc/cfgloopanal.c b/gcc/cfgloopanal.c index 199c20b..d78bfc6 100644 --- a/gcc/cfgloopanal.c +++ b/gcc/cfgloopanal.c @@ -467,16 +467,14 @@ mark_loop_exit_edges (void) to noreturn call. */ edge -single_likely_exit (class loop *loop) +single_likely_exit (class loop *loop, vec exits) { edge found = single_exit (loop); - vec exits; unsigned i; edge ex; if (found) return found; - exits = get_loop_exit_edges (loop); FOR_EACH_VEC_ELT (exits, i, ex) { if (probably_never_executed_edge_p (cfun, ex) @@ -489,12 +487,8 @@ single_likely_exit (class loop *loop) if (!found) found = ex; else - { - exits.release (); - return NULL; - } + return NULL; } - exits.release (); return found; } -- cgit v1.1