diff options
author | Richard Guenther <rguenther@suse.de> | 2012-04-18 08:55:41 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2012-04-18 08:55:41 +0000 |
commit | 421e608215243159a52fcaa35b3d88b04a95488d (patch) | |
tree | 9450082e7078447f707234f42e62f4aacd729bcd /gcc | |
parent | dcc186d607f8fc8ce3984ab6ae59997dbf2f3d31 (diff) | |
download | gcc-421e608215243159a52fcaa35b3d88b04a95488d.zip gcc-421e608215243159a52fcaa35b3d88b04a95488d.tar.gz gcc-421e608215243159a52fcaa35b3d88b04a95488d.tar.bz2 |
cfgloop.h (estimate_numbers_of_iterations_loop): Remove use_undefined_p parameter.
2012-04-18 Richard Guenther <rguenther@suse.de>
* cfgloop.h (estimate_numbers_of_iterations_loop): Remove
use_undefined_p parameter.
* tree-flow.h (estimate_numbers_of_iterations): Likewise.
* tree-ssa-loop-niter.c (estimate_numbers_of_iterations_loop):
Likewise.
(estimate_numbers_of_iterations): Likewise.
(estimated_loop_iterations): Adjust.
(max_loop_iterations): Likewise.
(scev_probably_wraps_p): Likewise.
* tree-ssa-loop.c (tree_ssa_loop_bounds): Likewise.
* tree-vrp.c (adjust_range_with_scev): Use max_stmt_executions,
not max_loop_iterations.
(execute_vrp): Remove explicit number of iterations estimation.
From-SVN: r186562
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 16 | ||||
-rw-r--r-- | gcc/cfgloop.h | 2 | ||||
-rw-r--r-- | gcc/tree-flow.h | 2 | ||||
-rw-r--r-- | gcc/tree-ssa-loop-niter.c | 15 | ||||
-rw-r--r-- | gcc/tree-ssa-loop.c | 2 | ||||
-rw-r--r-- | gcc/tree-vrp.c | 8 |
6 files changed, 27 insertions, 18 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index bb0e5e2..d60c8ba 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,19 @@ +2012-04-18 Richard Guenther <rguenther@suse.de> + + * cfgloop.h (estimate_numbers_of_iterations_loop): Remove + use_undefined_p parameter. + * tree-flow.h (estimate_numbers_of_iterations): Likewise. + * tree-ssa-loop-niter.c (estimate_numbers_of_iterations_loop): + Likewise. + (estimate_numbers_of_iterations): Likewise. + (estimated_loop_iterations): Adjust. + (max_loop_iterations): Likewise. + (scev_probably_wraps_p): Likewise. + * tree-ssa-loop.c (tree_ssa_loop_bounds): Likewise. + * tree-vrp.c (adjust_range_with_scev): Use max_stmt_executions, + not max_loop_iterations. + (execute_vrp): Remove explicit number of iterations estimation. + 2012-04-18 Enkovich Ilya <ilya.enkovich@intel.com> * config/i386/linux-common.h: New. diff --git a/gcc/cfgloop.h b/gcc/cfgloop.h index 82c8881..14cc8e8 100644 --- a/gcc/cfgloop.h +++ b/gcc/cfgloop.h @@ -278,7 +278,7 @@ gcov_type expected_loop_iterations_unbounded (const struct loop *); extern unsigned expected_loop_iterations (const struct loop *); extern rtx doloop_condition_get (rtx); -void estimate_numbers_of_iterations_loop (struct loop *, bool); +void estimate_numbers_of_iterations_loop (struct loop *); bool estimated_loop_iterations (struct loop *, double_int *); bool max_loop_iterations (struct loop *, double_int *); HOST_WIDE_INT estimated_loop_iterations_int (struct loop *); diff --git a/gcc/tree-flow.h b/gcc/tree-flow.h index 241ee05..2a17ff1 100644 --- a/gcc/tree-flow.h +++ b/gcc/tree-flow.h @@ -685,7 +685,7 @@ bool number_of_iterations_exit (struct loop *, edge, tree find_loop_niter (struct loop *, edge *); tree loop_niter_by_eval (struct loop *, edge); tree find_loop_niter_by_eval (struct loop *, edge *); -void estimate_numbers_of_iterations (bool); +void estimate_numbers_of_iterations (void); bool scev_probably_wraps_p (tree, tree, gimple, struct loop *, bool); bool convert_affine_scev (struct loop *, tree, tree *, tree *, gimple, bool); diff --git a/gcc/tree-ssa-loop-niter.c b/gcc/tree-ssa-loop-niter.c index 8225121..ab7441b 100644 --- a/gcc/tree-ssa-loop-niter.c +++ b/gcc/tree-ssa-loop-niter.c @@ -2950,7 +2950,7 @@ gcov_type_to_double_int (gcov_type val) is true also use estimates derived from undefined behavior. */ void -estimate_numbers_of_iterations_loop (struct loop *loop, bool use_undefined_p) +estimate_numbers_of_iterations_loop (struct loop *loop) { VEC (edge, heap) *exits; tree niter, type; @@ -2984,8 +2984,7 @@ estimate_numbers_of_iterations_loop (struct loop *loop, bool use_undefined_p) } VEC_free (edge, heap, exits); - if (use_undefined_p) - infer_loop_bounds_from_undefined (loop); + infer_loop_bounds_from_undefined (loop); /* If we have a measured profile, use it to estimate the number of iterations. */ @@ -3013,7 +3012,7 @@ estimate_numbers_of_iterations_loop (struct loop *loop, bool use_undefined_p) bool estimated_loop_iterations (struct loop *loop, double_int *nit) { - estimate_numbers_of_iterations_loop (loop, true); + estimate_numbers_of_iterations_loop (loop); if (!loop->any_estimate) return false; @@ -3028,7 +3027,7 @@ estimated_loop_iterations (struct loop *loop, double_int *nit) bool max_loop_iterations (struct loop *loop, double_int *nit) { - estimate_numbers_of_iterations_loop (loop, true); + estimate_numbers_of_iterations_loop (loop); if (!loop->any_upper_bound) return false; @@ -3155,7 +3154,7 @@ estimated_stmt_executions (struct loop *loop, double_int *nit) /* Records estimates on numbers of iterations of loops. */ void -estimate_numbers_of_iterations (bool use_undefined_p) +estimate_numbers_of_iterations (void) { loop_iterator li; struct loop *loop; @@ -3166,7 +3165,7 @@ estimate_numbers_of_iterations (bool use_undefined_p) FOR_EACH_LOOP (li, loop, 0) { - estimate_numbers_of_iterations_loop (loop, use_undefined_p); + estimate_numbers_of_iterations_loop (loop); } fold_undefer_and_ignore_overflow_warnings (); @@ -3362,7 +3361,7 @@ scev_probably_wraps_p (tree base, tree step, valid_niter = fold_build2 (FLOOR_DIV_EXPR, unsigned_type, delta, step_abs); - estimate_numbers_of_iterations_loop (loop, true); + estimate_numbers_of_iterations_loop (loop); for (bound = loop->bounds; bound; bound = bound->next) { if (n_of_executions_at_most (at_stmt, bound, valid_niter)) diff --git a/gcc/tree-ssa-loop.c b/gcc/tree-ssa-loop.c index a91bf39..3d650bf 100644 --- a/gcc/tree-ssa-loop.c +++ b/gcc/tree-ssa-loop.c @@ -420,7 +420,7 @@ tree_ssa_loop_bounds (void) if (number_of_loops () <= 1) return 0; - estimate_numbers_of_iterations (true); + estimate_numbers_of_iterations (); scev_reset (); return 0; } diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c index a53ceeb..6602afb 100644 --- a/gcc/tree-vrp.c +++ b/gcc/tree-vrp.c @@ -3420,7 +3420,7 @@ adjust_range_with_scev (value_range_t *vr, struct loop *loop, { double_int nit; - if (max_loop_iterations (loop, &nit)) + if (max_stmt_executions (loop, &nit)) { value_range_t maxvr = { VR_UNDEFINED, NULL_TREE, NULL_TREE, NULL }; double_int dtmp; @@ -8272,12 +8272,6 @@ execute_vrp (void) insert_range_assertions (); - /* Estimate number of iterations - but do not use undefined behavior - for this. We can't do this lazily as other functions may compute - this using undefined behavior. */ - free_numbers_of_iterations_estimates (); - estimate_numbers_of_iterations (false); - to_remove_edges = VEC_alloc (edge, heap, 10); to_update_switch_stmts = VEC_alloc (switch_update, heap, 5); threadedge_initialize_values (); |