Richard Guenther writes: > On Fri, Jun 15, 2012 at 5:00 PM, Ulrich Weigand <uweig...@de.ibm.com> wrote: > > Richard Guenther wrote: > >> On Fri, Jun 15, 2012 at 3:13 PM, Ulrich Weigand <uweig...@de.ibm.com> > >> wrote: > >> > However, there is a second case where we need to check every pass: if > >> > we're not actually vectorizing any loop, but are performing basic-block > >> > SLP. In this case, it would appear that we need the same check as > >> > described in the comment above, i.e. to verify that the stride is a > >> > multiple of the vector size. > >> > > >> > The patch below adds this check, and this indeed fixes the invalid > >> > access > >> > I was seeing in the test case (in the final assembler, we now get a > >> > vld1.16 instead of vldr). > >> > > >> > Tested on arm-linux-gnueabi with no regressions. > >> > > >> > OK for mainline? > >> > >> Ok. > > > > Thanks for the quick review; I've checked this in to mainline now. > > > > I just noticed that the test case also crashes on 4.7, but not on 4.6. > > > > Would a backport to 4.7 also be OK, once testing passes? > > Yes. Please leave it on mainline a few days to catch fallout from > autotesters.
This patch caused FAIL: gcc.dg/vect/bb-slp-16.c scan-tree-dump-times slp "basic block vectorized using SLP" 1 on sparc64-linux. Comparing the pre and post patch dumps for that file shows 22: vect_compute_data_ref_alignment: 22: misalign = 4 bytes of ref MEM[(unsigned int *)pout_90 + 28B] 22: vect_compute_data_ref_alignment: -22: force alignment of arr[i_87] -22: misalign = 0 bytes of ref arr[i_87] +22: SLP: step doesn't divide the vector-size. +22: Unknown alignment for access: arr (lots of stuff that's simply gone) -22: BASIC BLOCK VECTORIZED - -22: basic block vectorized using SLP +22: not vectorized: unsupported unaligned store.arr[i_87] +22: not vectorized: unsupported alignment in basic block. /Mikael