tree-vectorizer.c (slpeel_add_loop_guard): Fix types.
2008-09-11 Richard Guenther <rguenther@suse.de> * tree-vectorizer.c (slpeel_add_loop_guard): Fix types. (set_prologue_iterations): Likewise. * tree-vect-transform.c (vect_create_addr_base_for_vector_ref): Likewise. (vect_update_init_of_dr): Likewise. * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Fix type verification. * fold-const.c (fold_unary): Do not generate calculations in sub-types. From-SVN: r140291
This commit is contained in:
parent
3082165492
commit
420da8caae
5 changed files with 32 additions and 14 deletions
|
@ -1,3 +1,15 @@
|
|||
2008-09-11 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
* tree-vectorizer.c (slpeel_add_loop_guard): Fix types.
|
||||
(set_prologue_iterations): Likewise.
|
||||
* tree-vect-transform.c (vect_create_addr_base_for_vector_ref):
|
||||
Likewise.
|
||||
(vect_update_init_of_dr): Likewise.
|
||||
* tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Fix
|
||||
type verification.
|
||||
* fold-const.c (fold_unary): Do not generate calculations
|
||||
in sub-types.
|
||||
|
||||
2008-09-11 Paolo Bonzini <bonzini@gnu.org>
|
||||
|
||||
* dojump.c (do_jump) [BIT_AND_EXPR]: Move below. Fall through to
|
||||
|
|
|
@ -7883,7 +7883,9 @@ fold_unary (enum tree_code code, tree type, tree op0)
|
|||
transformation effectively doesn't preserve non-maximal ranges. */
|
||||
if (TREE_CODE (type) == INTEGER_TYPE
|
||||
&& TREE_CODE (op0) == BIT_AND_EXPR
|
||||
&& TREE_CODE (TREE_OPERAND (op0, 1)) == INTEGER_CST)
|
||||
&& TREE_CODE (TREE_OPERAND (op0, 1)) == INTEGER_CST
|
||||
/* Not if the conversion is to the sub-type. */
|
||||
&& TREE_TYPE (type) != TREE_TYPE (op0))
|
||||
{
|
||||
tree and = op0;
|
||||
tree and0 = TREE_OPERAND (and, 0), and1 = TREE_OPERAND (and, 1);
|
||||
|
|
|
@ -834,7 +834,7 @@ forward_propagate_addr_expr_1 (tree name, tree def_rhs,
|
|||
if (TREE_CODE (rhs2) == SSA_NAME
|
||||
/* Avoid problems with IVopts creating PLUS_EXPRs with a
|
||||
different type than their operands. */
|
||||
&& useless_type_conversion_p (TREE_TYPE (lhs), TREE_TYPE (name)))
|
||||
&& useless_type_conversion_p (TREE_TYPE (lhs), TREE_TYPE (def_rhs)))
|
||||
return forward_propagate_addr_into_variable_array_index (rhs2, def_rhs,
|
||||
use_stmt_gsi);
|
||||
return false;
|
||||
|
|
|
@ -918,9 +918,10 @@ vect_create_addr_base_for_vector_ref (gimple stmt,
|
|||
gimple_seq_add_seq (new_stmt_list, seq);
|
||||
|
||||
/* Create base_offset */
|
||||
base_offset = size_binop (PLUS_EXPR, base_offset, init);
|
||||
base_offset = fold_convert (sizetype, base_offset);
|
||||
dest = create_tmp_var (TREE_TYPE (base_offset), "base_off");
|
||||
base_offset = size_binop (PLUS_EXPR,
|
||||
fold_convert (sizetype, base_offset),
|
||||
fold_convert (sizetype, init));
|
||||
dest = create_tmp_var (sizetype, "base_off");
|
||||
add_referenced_var (dest);
|
||||
base_offset = force_gimple_operand (base_offset, &seq, true, dest);
|
||||
gimple_seq_add_seq (new_stmt_list, seq);
|
||||
|
@ -930,8 +931,9 @@ vect_create_addr_base_for_vector_ref (gimple stmt,
|
|||
tree tmp = create_tmp_var (sizetype, "offset");
|
||||
|
||||
add_referenced_var (tmp);
|
||||
offset = fold_build2 (MULT_EXPR, TREE_TYPE (offset), offset, step);
|
||||
base_offset = fold_build2 (PLUS_EXPR, TREE_TYPE (base_offset),
|
||||
offset = fold_build2 (MULT_EXPR, sizetype,
|
||||
fold_convert (sizetype, offset), step);
|
||||
base_offset = fold_build2 (PLUS_EXPR, sizetype,
|
||||
base_offset, offset);
|
||||
base_offset = force_gimple_operand (base_offset, &seq, false, tmp);
|
||||
gimple_seq_add_seq (new_stmt_list, seq);
|
||||
|
@ -7632,8 +7634,10 @@ vect_update_init_of_dr (struct data_reference *dr, tree niters)
|
|||
{
|
||||
tree offset = DR_OFFSET (dr);
|
||||
|
||||
niters = fold_build2 (MULT_EXPR, TREE_TYPE (niters), niters, DR_STEP (dr));
|
||||
offset = fold_build2 (PLUS_EXPR, TREE_TYPE (offset), offset, niters);
|
||||
niters = fold_build2 (MULT_EXPR, sizetype,
|
||||
fold_convert (sizetype, niters),
|
||||
fold_convert (sizetype, DR_STEP (dr)));
|
||||
offset = fold_build2 (PLUS_EXPR, sizetype, offset, niters);
|
||||
DR_OFFSET (dr) = offset;
|
||||
}
|
||||
|
||||
|
|
|
@ -940,10 +940,9 @@ slpeel_add_loop_guard (basic_block guard_bb, tree cond, basic_block exit_bb,
|
|||
enter_e->flags |= EDGE_FALSE_VALUE;
|
||||
gsi = gsi_last_bb (guard_bb);
|
||||
|
||||
cond =
|
||||
force_gimple_operand (cond, &gimplify_stmt_list, true,
|
||||
NULL_TREE);
|
||||
cond_stmt = gimple_build_cond (NE_EXPR, cond, integer_zero_node,
|
||||
cond = force_gimple_operand (cond, &gimplify_stmt_list, true, NULL_TREE);
|
||||
cond_stmt = gimple_build_cond (NE_EXPR,
|
||||
cond, build_int_cst (TREE_TYPE (cond), 0),
|
||||
NULL_TREE, NULL_TREE);
|
||||
if (gimplify_stmt_list)
|
||||
gsi_insert_seq_after (&gsi, gimplify_stmt_list, GSI_NEW_STMT);
|
||||
|
@ -1073,7 +1072,8 @@ set_prologue_iterations (basic_block bb_before_first_loop,
|
|||
force_gimple_operand (cost_pre_condition, &gimplify_stmt_list,
|
||||
true, NULL_TREE);
|
||||
cond_stmt = gimple_build_cond (NE_EXPR, cost_pre_condition,
|
||||
integer_zero_node, NULL_TREE, NULL_TREE);
|
||||
build_int_cst (TREE_TYPE (cost_pre_condition),
|
||||
0), NULL_TREE, NULL_TREE);
|
||||
|
||||
gsi = gsi_last_bb (cond_bb);
|
||||
if (gimplify_stmt_list)
|
||||
|
|
Loading…
Add table
Reference in a new issue