https://gcc.gnu.org/g:3f868fb150957e0510d37d5f39effbddc2f8a4f1

commit r16-3515-g3f868fb150957e0510d37d5f39effbddc2f8a4f1
Author: Richard Biener <rguent...@suse.de>
Date:   Mon Sep 1 15:49:59 2025 +0200

    Restore STMT_VINFO_VECTYPE during analysis, set to NULL for all stmts
    
    The following makes vect_analyze_stmt call vectorizable_* with all
    STMT_VINFO_VECTYPE NULL_TREE but restores the value for eventual
    iteration with single-lane SLP.  It clears it for every stmt during
    vect_transform_stmt.
    
            * tree-vect-stmts.cc (vect_transform_stmt): Clear
            STMT_VINFO_VECTYPE for all stmts.
            (vect_analyze_stmt): Likewise.  But restore at the end again.

Diff:
---
 gcc/tree-vect-stmts.cc | 13 +++++--------
 1 file changed, 5 insertions(+), 8 deletions(-)

diff --git a/gcc/tree-vect-stmts.cc b/gcc/tree-vect-stmts.cc
index b63a180811e3..5b1f291fa8d8 100644
--- a/gcc/tree-vect-stmts.cc
+++ b/gcc/tree-vect-stmts.cc
@@ -12601,10 +12601,8 @@ vect_analyze_stmt (vec_info *vinfo,
         gcc_unreachable ();
     }
 
-  if (! STMT_VINFO_DATA_REF (stmt_info))
-    STMT_VINFO_VECTYPE (stmt_info) = NULL_TREE;
-  else
-    STMT_VINFO_VECTYPE (stmt_info) = SLP_TREE_VECTYPE (node);
+  tree saved_vectype = STMT_VINFO_VECTYPE (stmt_info);
+  STMT_VINFO_VECTYPE (stmt_info) = NULL_TREE;
 
   if (STMT_VINFO_RELEVANT_P (stmt_info))
     {
@@ -12650,6 +12648,8 @@ vect_analyze_stmt (vec_info *vinfo,
                                              stmt_info, NULL, node,
                                              cost_vec))));
 
+  STMT_VINFO_VECTYPE (stmt_info) = saved_vectype;
+
   if (!ok)
     return opt_result::failure_at (stmt_info->stmt,
                                   "not vectorized:"
@@ -12693,10 +12693,7 @@ vect_transform_stmt (vec_info *vinfo,
     dump_printf_loc (MSG_NOTE, vect_location,
                     "------>vectorizing statement: %G", stmt_info->stmt);
 
-  if (! STMT_VINFO_DATA_REF (stmt_info))
-    STMT_VINFO_VECTYPE (stmt_info) = NULL_TREE;
-  else
-    STMT_VINFO_VECTYPE (stmt_info) = SLP_TREE_VECTYPE (slp_node);
+  STMT_VINFO_VECTYPE (stmt_info) = NULL_TREE;
 
   switch (SLP_TREE_TYPE (slp_node))
     {

Reply via email to