mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-02-23 05:39:20 +08:00
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
This commit is contained in:
parent
dcc186d607
commit
421e608215
@ -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.
|
||||
|
@ -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 *);
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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))
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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 ();
|
||||
|
Loading…
Reference in New Issue
Block a user