diff options
author | Richard Biener <rguenther@suse.de> | 2024-10-25 14:20:23 +0200 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2024-10-26 14:15:23 +0200 |
commit | 9fd86361676064a06ed61d4e7ae82492a14185a3 (patch) | |
tree | 8ad5a43c10739850c796cfda124dfa1d62cec848 /gcc | |
parent | 5203deaf526b7119b456c0ac568851957640c078 (diff) | |
download | gcc-9fd86361676064a06ed61d4e7ae82492a14185a3.zip gcc-9fd86361676064a06ed61d4e7ae82492a14185a3.tar.gz gcc-9fd86361676064a06ed61d4e7ae82492a14185a3.tar.bz2 |
Finish vectorizer pattern proper COND_EXPR transition
This fixes up vect_recog_ctz_ffs_pattern.
* tree-vect-patterns.cc (vect_recog_ctz_ffs_pattern): Create
a separate pattern stmt for the comparison in the generated
COND_EXPR.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/tree-vect-patterns.cc | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/gcc/tree-vect-patterns.cc b/gcc/tree-vect-patterns.cc index d9fe493..46aa312 100644 --- a/gcc/tree-vect-patterns.cc +++ b/gcc/tree-vect-patterns.cc @@ -2072,8 +2072,11 @@ vect_recog_ctz_ffs_pattern (vec_info *vinfo, stmt_vec_info stmt_vinfo, tree ret_var = vect_recog_temp_ssa_var (lhs_type, NULL); rhs_oprnd = gimple_call_arg (call_stmt, 0); rhs_type = TREE_TYPE (rhs_oprnd); - tree cmp = build2_loc (loc, NE_EXPR, boolean_type_node, - rhs_oprnd, build_zero_cst (rhs_type)); + tree cmp = vect_recog_temp_ssa_var (boolean_type_node, NULL); + pattern_stmt = gimple_build_assign (cmp, NE_EXPR, rhs_oprnd, + build_zero_cst (rhs_type)); + append_pattern_def_seq (vinfo, stmt_vinfo, pattern_stmt, + truth_type_for (vec_type), rhs_type); pattern_stmt = gimple_build_assign (ret_var, COND_EXPR, cmp, new_var, build_int_cst (lhs_type, val)); |