diff options
author | Richard Guenther <rguenther@suse.de> | 2008-09-11 14:53:20 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2008-09-11 14:53:20 +0000 |
commit | 420da8caae151d84ef45e31cf058e9832d856b9e (patch) | |
tree | 9c89799f44ae4d4e96a1e79f7af70fca2353d8c8 /gcc/tree-vect-transform.c | |
parent | 308216549297c41fb602dced560fa1ed8af0f8f6 (diff) | |
download | gcc-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.c | 18 |
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; } |