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