https://gcc.gnu.org/g:e2bef5c639ab5a1b519b738cf67a03b85432d5dd

commit e2bef5c639ab5a1b519b738cf67a03b85432d5dd
Author: Richard Biener <rguent...@suse.de>
Date:   Thu Mar 7 15:36:00 2024 +0100

    Fix last commit WRT patterns
    
            * tree-vect-slp.cc (vect_analyze_slp): Look at the pattern
            stmt for unused-only-live stmts.

Diff:
---
 gcc/tree-vect-slp.cc | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/gcc/tree-vect-slp.cc b/gcc/tree-vect-slp.cc
index f39a122e035..ae749ff11ff 100644
--- a/gcc/tree-vect-slp.cc
+++ b/gcc/tree-vect-slp.cc
@@ -3956,10 +3956,12 @@ vect_analyze_slp (vec_info *vinfo, unsigned 
max_tree_size)
                gphi *lc_phi = *gsi;
                tree def = gimple_phi_arg_def_from_edge (lc_phi, e);
                stmt_vec_info stmt_info;
-               if (TREE_CODE (def) == SSA_NAME
-                   && !virtual_operand_p (def)
-                   && (stmt_info = loop_vinfo->lookup_def (def))
-                   && STMT_VINFO_RELEVANT (stmt_info) == vect_used_only_live
+               if (TREE_CODE (def) != SSA_NAME
+                   || virtual_operand_p (def)
+                   || !(stmt_info = loop_vinfo->lookup_def (def)))
+                 continue;
+               stmt_info = vect_stmt_to_vectorize (stmt_info);
+               if (STMT_VINFO_RELEVANT (stmt_info) == vect_used_only_live
                    && STMT_VINFO_LIVE_P (stmt_info)
                    && (STMT_VINFO_DEF_TYPE (stmt_info) == vect_induction_def
                        || (STMT_VINFO_DEF_TYPE (stmt_info) == vect_internal_def
@@ -3969,9 +3971,9 @@ vect_analyze_slp (vec_info *vinfo, unsigned max_tree_size)
                    vec<stmt_vec_info> roots = vNULL;
                    vec<tree> remain = vNULL;
                    stmts.create (1);
-                   stmts.quick_push (vect_stmt_to_vectorize (stmt_info));
+                   stmts.quick_push (stmt_info);
                    bool res = vect_build_slp_instance (vinfo,
-                                                       
slp_inst_kind_reduc_group,
+                                                       /* ??? */ 
slp_inst_kind_reduc_group,
                                                        stmts, roots, remain,
                                                        max_tree_size, &limit,
                                                        bst_map, NULL);

Reply via email to