void m(int *p, int *p2, int q) { int *a = p; int i, j, r; i = 0; for (; i < 63; i++) { r = j = 0; for (; j < 63; j++) r -= p2[j]; a[i] = r; } }
For the code above, expandBounds that works for LoopVectorize can
generate incorrect runtime checks that the range generated for the p2
group is [p2+62, p2+63) rather than [p2, p2+63).
Can we instead directly check if CG->Low == Sc and CG->High == SC + 1, which is the assumption for the check that is generated?
As an additional test case, could you add a case where we have 2 invariant members with the same addresses, if that's possible?