diff options
author | dorit <dorit@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-11-23 09:19:24 +0000 |
---|---|---|
committer | dorit <dorit@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-11-23 09:19:24 +0000 |
commit | b18210016d3b2326a5f39677d16b540bf23931d7 (patch) | |
tree | dc6359ab8002b825fad0caab609f525b5b0ef3e2 /gcc/tree-vectorizer.c | |
parent | 81e48263b92c0f9fc4b2fcd1fd31bc5dd6eeb790 (diff) | |
download | gcc-b18210016d3b2326a5f39677d16b540bf23931d7.tar.gz |
PR tree-opt/18403
PR tree-opt/18505
* tree-vectorizer.c (vect_create_data_ref_ptr): Use
lang_hooks.types.type_for_size instead of integer_type_node for the
type of ptr_update.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@91081 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-vectorizer.c')
-rw-r--r-- | gcc/tree-vectorizer.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/gcc/tree-vectorizer.c b/gcc/tree-vectorizer.c index b94ffa4f25a..6164036ab4e 100644 --- a/gcc/tree-vectorizer.c +++ b/gcc/tree-vectorizer.c @@ -1866,6 +1866,7 @@ vect_create_data_ref_ptr (tree stmt, block_stmt_iterator *bsi, tree offset, tree vectype_size; tree ptr_update; tree data_ref_ptr; + tree type, tmp, size; base_name = unshare_expr (DR_BASE_NAME (dr)); if (vect_debug_details (NULL)) @@ -1952,11 +1953,20 @@ vect_create_data_ref_ptr (tree stmt, block_stmt_iterator *bsi, tree offset, idx = vect_create_index_for_vector_ref (loop, bsi); /* Create: update = idx * vectype_size */ - ptr_update = create_tmp_var (integer_type_node, "update"); + tmp = create_tmp_var (integer_type_node, "update"); + add_referenced_tmp_var (tmp); + size = TYPE_SIZE (vect_ptr_type); + type = lang_hooks.types.type_for_size (tree_low_cst (size, 1), 1); + ptr_update = create_tmp_var (type, "update"); add_referenced_tmp_var (ptr_update); vectype_size = build_int_cst (integer_type_node, GET_MODE_SIZE (TYPE_MODE (vectype))); vec_stmt = build2 (MULT_EXPR, integer_type_node, idx, vectype_size); + vec_stmt = build2 (MODIFY_EXPR, void_type_node, tmp, vec_stmt); + new_temp = make_ssa_name (tmp, vec_stmt); + TREE_OPERAND (vec_stmt, 0) = new_temp; + bsi_insert_before (bsi, vec_stmt, BSI_SAME_STMT); + vec_stmt = fold_convert (type, new_temp); vec_stmt = build2 (MODIFY_EXPR, void_type_node, ptr_update, vec_stmt); new_temp = make_ssa_name (ptr_update, vec_stmt); TREE_OPERAND (vec_stmt, 0) = new_temp; |