On Sun, Jul 21, 2024 at 11:15 AM Feng Xue OS <f...@os.amperecomputing.com> wrote: > > The work for RFC > (https://gcc.gnu.org/pipermail/gcc-patches/2024-July/657860.html) > involves not a little code change, so I have to separate it into several > batches > of patchset. This and the following patches constitute the first batch. > > Since pattern statement coexists with normal statements in a way that it is > not linked into function body, we should not invoke utility procedures that > depends on def/use graph on pattern statement, such as counting uses of a > pseudo value defined by a pattern statement. This patch is to fix a bug of > this type in vect pattern formation. > > Thanks, > Feng > --- > gcc/ > * tree-vect-patterns.cc (vect_recog_bitfield_ref_pattern): Only call > single_imm_use if statement is not generated by pattern recognition. > --- > gcc/tree-vect-patterns.cc | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/gcc/tree-vect-patterns.cc b/gcc/tree-vect-patterns.cc > index 4570c25b664..ca8809e7cfd 100644 > --- a/gcc/tree-vect-patterns.cc > +++ b/gcc/tree-vect-patterns.cc > @@ -2700,7 +2700,8 @@ vect_recog_bitfield_ref_pattern (vec_info *vinfo, > stmt_vec_info stmt_info, > /* If the only use of the result of this BIT_FIELD_REF + CONVERT is a > PLUS_EXPR then do the shift last as some targets can combine the shift > and > add into a single instruction. */ > - if (lhs && single_imm_use (lhs, &use_p, &use_stmt)) > + if (lhs && !STMT_VINFO_RELATED_STMT (stmt_info)
!is_pattern_stmt_p (stmt_info) should be clearer OK with that change. > + && single_imm_use (lhs, &use_p, &use_stmt)) > { > if (gimple_code (use_stmt) == GIMPLE_ASSIGN > && gimple_assign_rhs_code (use_stmt) == PLUS_EXPR) > -- > 2.17.1 >