gcc could not vectorize this simple reversed loop:
int a[100], b[100];
void foo(int n)
{
  int i;
  for(i=n-2; i>=0; i--)
    a[i+1] = a[i] + b[i];
}

chf...@pathscale:~/gcc$ gcc -O3 -ftree-vectorizer-verbose=2 -c foo.c
foo.c:6: note: not vectorized: complicated access pattern.
foo.c:3: note: vectorized 0 loops in function.

open64 can vectorize this loop:
chf...@pathscale:~/gcc$ opencc -O3 -LNO:simd_verbose=on -c foo.c
(foo.c:0) LOOP WAS VECTORIZED.


-- 
           Summary: reversed loop is not vectorized
           Product: gcc
           Version: 4.5.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: changpeng dot fang at amd dot com


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

Reply via email to