https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96109
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |ASSIGNED
Assignee|unassigned at gcc dot gnu.org |rguenth at gcc dot
gnu.org
Ever confirmed|0 |1
Last reconfirmed| |2020-07-08
--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
Hmm, the loads should be all aligned ... but maybe we're not figuring they are.
Ah, so this is confusion in vect_compute_data_ref_alignment which does
/* 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 (drb->step) < 0)
/* PLUS because STEP is negative. */
misalignment += ((TYPE_VECTOR_SUBPARTS (vectype) - 1)
* -TREE_INT_CST_LOW (TYPE_SIZE_UNIT (TREE_TYPE
(vectype))));
but that's of course not the ideal place to do this because the actual
DRs alignment is _not_ different. And in fact for SLP the above is even
bogus - I suppose we might even end up with wrong code in case the above
would make the access appear aligned.