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

--- Comment #5 from rguenther at suse dot de <rguenther at suse dot de> ---
On Mon, 6 Jul 2020, rsandifo at gcc dot gnu.org wrote:

> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96075
> 
> --- Comment #4 from rsandifo at gcc dot gnu.org <rsandifo at gcc dot gnu.org> 
> ---
> (In reply to Richard Biener from comment #3)
> > So we end up calling get_negative_load_store_type for this group which seems
> > to only handle contiguous accesses but this one is single element
> > interleaving
> > aka contiguous with gap.
> > 
> > vect_supportable_dr_alignment returns dr_aligned which is seemingly OK for
> > 
> > #(Data Ref: 
> > #  bb: 3 
> > #  stmt: _4 = y[_2];
> > #  ref: y[_2];
> > #  base_object: y;
> > #  Access function 0: {1022, +, -2}_1
> Are you sure we support this?  I think…
> 
> >   /* If this is a backward running DR then first access in the larger
> >      vectype actually is N-1 elements before the address in the DR.
> >      Adjust misalign accordingly.  */
> >   if (tree_int_cst_sgn (step) < 0)
> >     { 
> >       tree offset = ssize_int (TYPE_VECTOR_SUBPARTS (vectype) - 1);
> >       /* DR_STEP(dr) is the same as -TYPE_SIZE of the scalar type,
> >          otherwise we wouldn't be here.  */
> …really was the assumption for negative steps at one time,
> and I'm not sure off-hand when/if that changed.
> 
> (Of course, it might be that one of my patches changed it.)

Yeah - me too.  We still don't seem to support those for
interleaving [single element] groups but we let them slip
through for SLP ...

That said, the patch shouldn't make the situation worse at least ;)

Reply via email to