From: Alfie Richards Date: Thu, 24 Jul 2025 08:16:30 +0000 (+0000) Subject: vect: remove cast to pointer for create_if in vect_create_data_ref_ptr X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=01da5644eaade772bc9eae5a219e381ada56b3a1;p=thirdparty%2Fgcc.git vect: remove cast to pointer for create_if in vect_create_data_ref_ptr Removes `fold_convert (aggr_ptr_type, iv_step)` when using create_iv. This was previously constructing statements like: ``` unsigned int _49; vector([4,4]) int * _50; sizetype _51; vector([4,4]) int * vectp_x.6; ... _50 = (vector([4,4]) int *) _49; _51 = (sizetype) _50; ... vectp_x.6_48 = vectp_x.6_47 + _51; ``` And instead creates: ``` unsigned int _49; sizetype _50; vector([4,4]) int * vectp_x.6; ... _50 = (sizetype) _49; ... vectp_x.6_48 = vectp_x.6_47 + _50; ``` As create_iv already has the logic to handle a pointer mode base and an integer mode var this seems a more natural expression of this. gcc/ChangeLog: * tree-vect-data-refs.cc (vect_create_data_ref_ptr): Remove unnecessary casts to aggr_ptr_type. --- diff --git a/gcc/tree-vect-data-refs.cc b/gcc/tree-vect-data-refs.cc index 460a48db2e6..5f672132a8a 100644 --- a/gcc/tree-vect-data-refs.cc +++ b/gcc/tree-vect-data-refs.cc @@ -5718,8 +5718,7 @@ vect_create_data_ref_ptr (vec_info *vinfo, stmt_vec_info stmt_info, standard_iv_increment_position (loop, &incr_gsi, &insert_after); create_iv (aggr_ptr_init, PLUS_EXPR, - fold_convert (aggr_ptr_type, iv_step), - aggr_ptr, loop, &incr_gsi, insert_after, + iv_step, aggr_ptr, loop, &incr_gsi, insert_after, &indx_before_incr, &indx_after_incr); incr = gsi_stmt (incr_gsi); @@ -5747,7 +5746,7 @@ vect_create_data_ref_ptr (vec_info *vinfo, stmt_vec_info stmt_info, { standard_iv_increment_position (containing_loop, &incr_gsi, &insert_after); - create_iv (aptr, PLUS_EXPR, fold_convert (aggr_ptr_type, DR_STEP (dr)), + create_iv (aptr, PLUS_EXPR, DR_STEP (dr), aggr_ptr, containing_loop, &incr_gsi, insert_after, &indx_before_incr, &indx_after_incr); incr = gsi_stmt (incr_gsi);