aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authordorit <dorit@138bc75d-0d04-0410-961f-82ee72b054a4>2004-11-23 09:19:24 +0000
committerdorit <dorit@138bc75d-0d04-0410-961f-82ee72b054a4>2004-11-23 09:19:24 +0000
commitb18210016d3b2326a5f39677d16b540bf23931d7 (patch)
treedc6359ab8002b825fad0caab609f525b5b0ef3e2 /gcc
parent81e48263b92c0f9fc4b2fcd1fd31bc5dd6eeb790 (diff)
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')
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/tree-vectorizer.c12
2 files changed, 19 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 3a0b972e755..e5d3f12ff84 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2004-11-23 Dorit Naishlos <dorit@il.ibm.com>
+
+ 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.
+
2004-11-23 Ralf Corsepius <ralf.corsepius@rtems.org>
* config.gcc (h8300-*-rtems*): Use h8300/t-rtems.
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;