re PR tree-optimization/19937 (Wrong loop exit (causes binutils to fail))

PR tree-optimization/19937
	* tree-ssa-loop-ivopts.c (rewrite_use_compare): Cast the final value
	to the type of the induction variable.

From-SVN: r95535
This commit is contained in:
Zdenek Dvorak 2005-02-25 13:07:11 +01:00 committed by Zdenek Dvorak
parent bd182be84e
commit 9e7376e595
2 changed files with 11 additions and 3 deletions

View File

@ -1,3 +1,9 @@
2005-02-25 Zdenek Dvorak <dvorakz@suse.cz>
PR tree-optimization/19937
* tree-ssa-loop-ivopts.c (rewrite_use_compare): Cast the final value
to the type of the induction variable.
2005-02-25 Kaz Kojima <kkojima@gcc.gnu.org>
PR rtl-optimization/20117

View File

@ -4878,15 +4878,17 @@ rewrite_use_compare (struct ivopts_data *data,
if (may_eliminate_iv (data, use, cand, &compare, &bound))
{
tree var = var_at_stmt (data->current_loop, cand, use->stmt);
tree var_type = TREE_TYPE (var);
bound = fold_convert (var_type, bound);
op = force_gimple_operand (unshare_expr (bound), &stmts,
true, NULL_TREE);
if (stmts)
bsi_insert_before (&bsi, stmts, BSI_SAME_STMT);
*use->op_p = build2 (compare, boolean_type_node,
var_at_stmt (data->current_loop,
cand, use->stmt), op);
*use->op_p = build2 (compare, boolean_type_node, var, op);
modify_stmt (use->stmt);
return;
}