Commit 3520b745 by Zdenek Dvorak Committed by Zdenek Dvorak

tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Do not add unnecessary cast…

tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Do not add unnecessary cast to original induction variable increments.

	* tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Do not add
	unnecessary cast to original induction variable increments.

From-SVN: r94681
parent b0a168b6
2005-02-06 Zdenek Dvorak <dvorakz@suse.cz>
* tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Do not add
unnecessary cast to original induction variable increments.
2005-02-06 Zdenek Dvorak <dvorakz@suse.cz>
PR tree-optimization/18219
* tree-ssa-loop-ivopts.c (get_computation_at): Produce computations
in distributed form.
......
......@@ -4542,11 +4542,32 @@ static void
rewrite_use_nonlinear_expr (struct ivopts_data *data,
struct iv_use *use, struct iv_cand *cand)
{
tree comp = unshare_expr (get_computation (data->current_loop,
use, cand));
tree comp;
tree op, stmts, tgt, ass;
block_stmt_iterator bsi, pbsi;
/* An important special case -- if we are asked to express value of
the original iv by itself, just exit; there is no need to
introduce a new computation (that might also need casting the
variable to unsigned and back). */
if (cand->pos == IP_ORIGINAL
&& TREE_CODE (use->stmt) == MODIFY_EXPR
&& TREE_OPERAND (use->stmt, 0) == cand->var_after)
{
op = TREE_OPERAND (use->stmt, 1);
/* Be a bit careful. In case variable is expressed in some
complicated way, rewrite it so that we may get rid of this
complicated expression. */
if ((TREE_CODE (op) == PLUS_EXPR
|| TREE_CODE (op) == MINUS_EXPR)
&& TREE_OPERAND (op, 0) == cand->var_before
&& TREE_CODE (TREE_OPERAND (op, 1)) == INTEGER_CST)
return;
}
comp = unshare_expr (get_computation (data->current_loop,
use, cand));
switch (TREE_CODE (use->stmt))
{
case PHI_NODE:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment