https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84004
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Priority|P3 |P1 Status|NEW |ASSIGNED Assignee|unassigned at gcc dot gnu.org |rguenth at gcc dot gnu.org --- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" { xfail {vect_element_align} } } } */ but # Return 1 if the target only requires element alignment for vector accesses proc check_effective_target_vect_element_align { } { so I'm not sure why we consider vect_element_align to be a reason to peel? In fact we don't have a good target to test whether there's likely peeling. Given the testcase in question: __attribute__ ((noinline)) int main1 (int n, float * __restrict__ pd, float * __restrict__ pa, float * __restrict__ pb, float * __restrict__ pc) { int i; for (i = 0; i < n; i++) { pa[i] = pb[i] * pc[i]; pd[i] = 5.0; } there are four refs and we can at most align one (unless IPA comes in the way with LTO). We have r164941 | jules | 2010-10-04 16:59:30 +0200 (Mon, 04 Oct 2010) | 40 lines gcc/testsuite/ * gcc.dg/vect/vect-42.c: Use vect_element_align instead of vect_hw_misalign. * gcc.dg/vect/vect-95.c: Likewise. but vect_element_align is essentially vect_hw_misalign for most targets. I'd say we should never peel this for alignment, that just doesn't make sense. Some target costs models might disagree but we'll find out...