https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116142

--- Comment #11 from Xi Ruoyao <xry111 at gcc dot gnu.org> ---
(In reply to rguent...@suse.de from comment #10)
> On Thu, 1 Aug 2024, xry111 at gcc dot gnu.org wrote:
> 
> > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116142
> > 
> > --- Comment #9 from Xi Ruoyao <xry111 at gcc dot gnu.org> ---
> > In the following call stack:
> > 
> > #0  single_imm_use (var=0x7ffff564a3a8, use_p=0x7fffffffc9d8, 
> >     stmt=0x7fffffffc9e0) at ../../gcc/gcc/ssa-iterators.h:427
> > #1  0x0000000001aabcde in vec_info::lookup_single_use (this=0x33a1b80, 
> >     lhs=0x7ffff564a3a8) at ../../gcc/gcc/tree-vectorizer.cc:581
> > #2  0x0000000001a1a40a in supportable_widening_operation (vinfo=0x33a1b80, 
> >     code=..., stmt_info=0x3482b50, vectype_out=0x7ffff595a1f8, 
> >     vectype_in=0x7ffff595a000, code1=0x7fffffffcb90, code2=0x7fffffffcb94, 
> >     multi_step_cvt=0x7fffffffcba0, interm_types=0x7fffffffcc48)
> >     at ../../gcc/gcc/tree-vect-stmts.cc:14196
> > #3  0x00000000019f7c2d in vectorizable_conversion (vinfo=0x33a1b80, 
> >     stmt_info=0x3482b50, gsi=0x0, vec_stmt=0x0, slp_node=0x33b4cc8, 
> >     cost_vec=0x7fffffffd190) at ../../gcc/gcc/tree-vect-stmts.cc:5438
> > #4  0x0000000001a16ecc in vect_analyze_stmt (vinfo=0x33a1b80, 
> >     stmt_info=0x3482b50, need_to_vectorize=0x7fffffffcf73, node=0x33b4cc8, 
> >     node_instance=0x32fb6e0, cost_vec=0x7fffffffd190)
> >     at ../../gcc/gcc/tree-vect-stmts.cc:13291
> > 
> > "ptr == ptr->next" is satisfied (the comment says it means "there aren't any
> > uses whatsoever" but I don't really understand it: I knows almost nothing 
> > about
> > tree vectorization) and single_imm_use directly returns false.
> 
> So likely 
> 
>           tree lhs = gimple_assign_lhs (stmt_info->stmt);
>           stmt_vec_info use_stmt_info = loop_info->lookup_single_use 
> (lhs);
>           if (use_stmt_info
> 
> needs to be
> 
>           tree lhs = gimple_assign_lhs (vect_orig_stmt (stmt_info)->stmt);
>           stmt_vec_info use_stmt_info = loop_info->lookup_single_use 
> (lhs);

Works for me!

Reply via email to