https://gcc.gnu.org/g:5e76090d320a83bf6eeb75c6adb950939aa674e9

commit r16-3158-g5e76090d320a83bf6eeb75c6adb950939aa674e9
Author: Richard Biener <rguent...@suse.de>
Date:   Mon Aug 11 15:38:41 2025 +0200

    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.

Diff:
---
 gcc/tree-vect-loop.cc | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/gcc/tree-vect-loop.cc b/gcc/tree-vect-loop.cc
index 64e5c23c2e23..32a424c5372b 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);
        }

Reply via email to