aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2025-08-11 15:38:41 +0200
committerRichard Biener <rguenth@gcc.gnu.org>2025-08-12 09:11:30 +0200
commit5e76090d320a83bf6eeb75c6adb950939aa674e9 (patch)
tree83d0064fb50cfe181b42d0b80ba25ab5b31c68fe /gcc
parentbceae48c3c0978fc840169dd4b487c24a0ac5c53 (diff)
downloadgcc-5e76090d320a83bf6eeb75c6adb950939aa674e9.zip
gcc-5e76090d320a83bf6eeb75c6adb950939aa674e9.tar.gz
gcc-5e76090d320a83bf6eeb75c6adb950939aa674e9.tar.bz2
Pass down vector type to avoid STMT_VINFO_VECTYPE on reduc-info
The following passes down the vector type to functions instead of querying it from the reduc-info stmt-info. * tree-vect-loop.cc (get_initial_defs_for_reduction): Get vector type as argument. (vect_find_reusable_accumulator): Likewise. (vect_transform_cycle_phi): Adjust.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/tree-vect-loop.cc9
1 files changed, 4 insertions, 5 deletions
diff --git a/gcc/tree-vect-loop.cc b/gcc/tree-vect-loop.cc
index 64e5c23..32a424c 100644
--- a/gcc/tree-vect-loop.cc
+++ b/gcc/tree-vect-loop.cc
@@ -5012,6 +5012,7 @@ vect_emit_reduction_init_stmts (loop_vec_info loop_vinfo,
static void
get_initial_defs_for_reduction (loop_vec_info loop_vinfo,
stmt_vec_info reduc_info,
+ tree vector_type,
vec<tree> *vec_oprnds,
unsigned int number_of_vectors,
unsigned int group_size, tree neutral_op)
@@ -5019,7 +5020,6 @@ get_initial_defs_for_reduction (loop_vec_info loop_vinfo,
vec<tree> &initial_values = reduc_info->reduc_initial_values;
unsigned HOST_WIDE_INT nunits;
unsigned j, number_of_places_left_in_vector;
- tree vector_type = STMT_VINFO_VECTYPE (reduc_info);
unsigned int i;
gcc_assert (group_size == initial_values.length () || neutral_op);
@@ -5155,7 +5155,7 @@ info_for_reduction (vec_info *vinfo, stmt_vec_info stmt_info)
static bool
vect_find_reusable_accumulator (loop_vec_info loop_vinfo,
- stmt_vec_info reduc_info)
+ stmt_vec_info reduc_info, tree vectype)
{
loop_vec_info main_loop_vinfo = LOOP_VINFO_ORIG_LOOP_INFO (loop_vinfo);
if (!main_loop_vinfo)
@@ -5204,7 +5204,6 @@ vect_find_reusable_accumulator (loop_vec_info loop_vinfo,
return false;
/* Handle the case where we can reduce wider vectors to narrower ones. */
- tree vectype = STMT_VINFO_VECTYPE (reduc_info);
tree old_vectype = TREE_TYPE (accumulator->reduc_input);
unsigned HOST_WIDE_INT m;
if (!constant_multiple_p (TYPE_VECTOR_SUBPARTS (old_vectype),
@@ -8435,7 +8434,7 @@ vect_transform_cycle_phi (loop_vec_info loop_vinfo,
initial_values.quick_push (vect_phi_initial_value (this_phi));
}
if (vec_num == 1)
- vect_find_reusable_accumulator (loop_vinfo, reduc_info);
+ vect_find_reusable_accumulator (loop_vinfo, reduc_info, vectype_out);
if (!initial_values.is_empty ())
{
tree initial_value
@@ -8458,7 +8457,7 @@ vect_transform_cycle_phi (loop_vec_info loop_vinfo,
= initial_values[0];
initial_values[0] = neutral_op;
}
- get_initial_defs_for_reduction (loop_vinfo, reduc_info,
+ get_initial_defs_for_reduction (loop_vinfo, reduc_info, vectype_out,
&vec_initial_defs, vec_num,
stmts.length (), neutral_op);
}