summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2012-04-18 08:55:41 +0000
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2012-04-18 08:55:41 +0000
commit7f521ab4c29ffe4341e246abb41728ccca1bd560 (patch)
tree9450082e7078447f707234f42e62f4aacd729bcd /gcc
parent38133496bcd701617a82b3a01af4a7986d35e47a (diff)
downloadgcc-7f521ab4c29ffe4341e246abb41728ccca1bd560.tar.gz
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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@186562 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog16
-rw-r--r--gcc/cfgloop.h2
-rw-r--r--gcc/tree-flow.h2
-rw-r--r--gcc/tree-ssa-loop-niter.c15
-rw-r--r--gcc/tree-ssa-loop.c2
-rw-r--r--gcc/tree-vrp.c8
6 files changed, 27 insertions, 18 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index bb0e5e2793c..d60c8bad4a4 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 82c8881fe58..14cc8e81a7c 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 241ee0545f5..2a17ff171ec 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 82251219665..ab7441b3ff9 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 a91bf3919ad..3d650bfcbfd 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 a53ceeb52b4..6602afb9b33 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 ();