http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48377

--- Comment #30 from Jakub Jelinek <jakub at gcc dot gnu.org> 2011-04-07 
13:29:15 UTC ---
This is certainly a valid testcase:

struct S { long long x; int a; double b[10000]; int c; } s;
double *p = &s.b[0];
int
foo (double *q)
{
  int i, j = 0;
  for (i = 0; i < 10000; i++)
    j += *q++;
  return j;
}
int
main (void)
{
  return foo (p);
}

and without the target hook, vectorizer would think it can peel the loop and
get it naturally aligned (assuming it isn't inlined at least etc. to see that q
points to &s.b[0] initially).

I think the bug is in the ABIs that do that kind of thing, but it is too late
to fix the ABIs up.

Reply via email to