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);