https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70130
--- Comment #10 from Richard Biener <rguenth at gcc dot gnu.org> --- Btw, which loop is it in this function? There are multiple ones. I assume the last loop nest: for (j=0;j< MB_BLOCK_SIZE;j++) { for (i=0;i< MB_BLOCK_SIZE;i++) { img->mprr_2[PLANE_16][j][i]=max(0,min((int)img->max_imgpel_value,(iaa+(i-7)*ib +(j-7)*ic + 16)/32));// store plane prediction } } > With images not 16-byte aligned, img->mprr_2 *is* 16-byte aligned, and we > take > the vectorized code path. I'd say it _happens_ to be 16-byte aligned (by luck). I assume nothing alignes *img to sth bigger than 8 bytes and thus whether mprr_2 is aligned to 16 bytes or not depends on random things (like the linker version).