diff options
author | Jan Hubicka <jh@suse.cz> | 2012-11-05 19:12:37 +0100 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2012-11-05 18:12:37 +0000 |
commit | 1bc60b1814a5f0d09a54dbc2b996ceed2d93a89c (patch) | |
tree | 91ffd52466854d214f0dd5ccd4348d2921b8c811 /gcc/tree-ssa-loop-niter.c | |
parent | 6d0ae0359c02628fa469d393739d564a630874b1 (diff) | |
download | gcc-1bc60b1814a5f0d09a54dbc2b996ceed2d93a89c.zip gcc-1bc60b1814a5f0d09a54dbc2b996ceed2d93a89c.tar.gz gcc-1bc60b1814a5f0d09a54dbc2b996ceed2d93a89c.tar.bz2 |
const-1.c: Update.
* gcc.dg/const-1.c: Update.
* gcc.dg/pure-1.c: Update.
* tree-ssa-loop-niter.c (finite_loop_p): Revamp to be just wrapper of
max_loop_iterations.
From-SVN: r193175
Diffstat (limited to 'gcc/tree-ssa-loop-niter.c')
-rw-r--r-- | gcc/tree-ssa-loop-niter.c | 31 |
1 files changed, 8 insertions, 23 deletions
diff --git a/gcc/tree-ssa-loop-niter.c b/gcc/tree-ssa-loop-niter.c index 87b550c..3936e60 100644 --- a/gcc/tree-ssa-loop-niter.c +++ b/gcc/tree-ssa-loop-niter.c @@ -1994,11 +1994,7 @@ find_loop_niter (struct loop *loop, edge *exit) bool finite_loop_p (struct loop *loop) { - unsigned i; - VEC (edge, heap) *exits; - edge ex; - struct tree_niter_desc desc; - bool finite = false; + double_int nit; int flags; if (flag_unsafe_loop_optimizations) @@ -2012,26 +2008,15 @@ finite_loop_p (struct loop *loop) return true; } - exits = get_loop_exit_edges (loop); - FOR_EACH_VEC_ELT (edge, exits, i, ex) + if (loop->any_upper_bound + || max_loop_iterations (loop, &nit)) { - if (!just_once_each_iteration_p (loop, ex->src)) - continue; - - if (number_of_iterations_exit (loop, ex, &desc, false)) - { - if (dump_file && (dump_flags & TDF_DETAILS)) - { - fprintf (dump_file, "Found loop %i to be finite: iterating ", loop->num); - print_generic_expr (dump_file, desc.niter, TDF_SLIM); - fprintf (dump_file, " times\n"); - } - finite = true; - break; - } + if (dump_file && (dump_flags & TDF_DETAILS)) + fprintf (dump_file, "Found loop %i to be finite: upper bound found.\n", + loop->num); + return true; } - VEC_free (edge, heap, exits); - return finite; + return false; } /* |