This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug tree-optimization/49771] [4.7 Regression] wrong code with -ftree-vectorize


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

--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> 2011-07-18 18:45:56 UTC ---
Yeah, that indeed fixes this testcase, and in addition keeps
static int a[2000];

int
foo (void)
{
  int j;
  int i;
  for (i = 0; i < 1000; i++)
    for (j = 0; j < 1000; j++)
      a[j] = a[1000 + i] + 1;
  return a[0];
}

doing the non-aliased loop (which I assume was the original intent of Richard's
patch).
It would be nice if GCC could figure this out at compile time in this case
though, it should know that on the #c0 testcase one of the accesses is 4 bytes
from &a[0] to &a[999] and the other can already be seen to be &a[0] through
&a[1000], so should be able to say that they always do alias.  In the testcase
from this comment that they never alias.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]