lihuang added a comment.
You are right. A regression test could be:
void foo2(int *dw, int *uw, int *A, int *B, int *C, int *D, int N) {
for (int i = 0; i < N; i++) {
dw[i] = A[i] + B[i - 1] + C[i - 2];
uw[i] = A[i] + B[i + 2];
}
}
need to fix the fundamental problem.
h
lihuang added a comment.
Hi Adam,
The change in http://reviews.llvm.org/D18777 breaks this test becasue it
converts some sexts to zexts, which cannot be eliminated by
indvar-simplification after widening IV.
The IR after indvar-simplification and before loop-vectorization is like:
...
%in
lihuang created this revision.
lihuang added reviewers: sanjoy, reames.
lihuang added a subscriber: cfe-commits.
Update an optimization remark test for change D18777.
This test checks the loop-vectorization remarks when pointer checking threshold
is exceeded. The change in D18777 would introduce