params.def (PARAM_MAX_ITERATIONS_COMPUTATION_COST): New.

* params.def (PARAM_MAX_ITERATIONS_COMPUTATION_COST): New.
	* loop-doloop.c (doloop_optimize): Use it to limit costs of
	expanding the number of iterations.

From-SVN: r116966
This commit is contained in:
Bernd Schmidt 2006-09-15 11:17:18 +00:00 committed by Bernd Schmidt
parent 21cc37194e
commit 45b9a14bd6
3 changed files with 24 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2005-09-15 Bernd Schmidt <bernd.schmidt@analog.com>
* params.def (PARAM_MAX_ITERATIONS_COMPUTATION_COST): New.
* loop-doloop.c (doloop_optimize): Use it to limit costs of
expanding the number of iterations.
2006-09-15 Kazu Hirata <kazu@codesourcery.com>
* doc/tm.texi (TARGET_FUNCTION_VALUE): Put @deftypefn all in

View File

@ -484,7 +484,7 @@ doloop_optimize (struct loop *loop)
rtx iterations_max;
rtx start_label;
rtx condition;
unsigned level, est_niter;
unsigned level, est_niter, max_cost;
struct niter_desc *desc;
unsigned word_mode_size;
unsigned HOST_WIDE_INT word_mode_max;
@ -525,6 +525,17 @@ doloop_optimize (struct loop *loop)
return false;
}
max_cost
= COSTS_N_INSNS (PARAM_VALUE (PARAM_MAX_ITERATIONS_COMPUTATION_COST));
if (rtx_cost (desc->niter_expr, SET) > max_cost)
{
if (dump_file)
fprintf (dump_file,
"Doloop: number of iterations too costly to compute.\n",
est_niter);
return false;
}
count = copy_rtx (desc->niter_expr);
iterations = desc->const_iter ? desc->niter_expr : const0_rtx;
iterations_max = GEN_INT (desc->niter_max);

View File

@ -292,6 +292,12 @@ DEFPARAM(PARAM_MAX_ITERATIONS_TO_TRACK,
"max-iterations-to-track",
"Bound on the number of iterations the brute force # of iterations analysis algorithm evaluates",
1000, 0, 0)
/* A cutoff to avoid costly computations of the number of iterations in
the doloop transformation. */
DEFPARAM(PARAM_MAX_ITERATIONS_COMPUTATION_COST,
"max-iterations-computation-cost",
"Bound on the cost of an expression to compute the number of iterations",
10, 0, 0)
DEFPARAM(PARAM_MAX_SMS_LOOP_NUMBER,
"max-sms-loop-number",