aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2024-10-25 14:20:23 +0200
committerRichard Biener <rguenth@gcc.gnu.org>2024-10-26 14:15:23 +0200
commit9fd86361676064a06ed61d4e7ae82492a14185a3 (patch)
tree8ad5a43c10739850c796cfda124dfa1d62cec848 /gcc
parent5203deaf526b7119b456c0ac568851957640c078 (diff)
downloadgcc-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.cc7
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));