aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vect-transform.c
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2008-09-11 14:53:20 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2008-09-11 14:53:20 +0000
commit420da8caae151d84ef45e31cf058e9832d856b9e (patch)
tree9c89799f44ae4d4e96a1e79f7af70fca2353d8c8 /gcc/tree-vect-transform.c
parent308216549297c41fb602dced560fa1ed8af0f8f6 (diff)
downloadgcc-420da8caae151d84ef45e31cf058e9832d856b9e.zip
gcc-420da8caae151d84ef45e31cf058e9832d856b9e.tar.gz
gcc-420da8caae151d84ef45e31cf058e9832d856b9e.tar.bz2
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
Diffstat (limited to 'gcc/tree-vect-transform.c')
-rw-r--r--gcc/tree-vect-transform.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/gcc/tree-vect-transform.c b/gcc/tree-vect-transform.c
index a889836..d69ce51 100644
--- a/gcc/tree-vect-transform.c
+++ b/gcc/tree-vect-transform.c
@@ -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;
}