The loop vectorizer is running in an assert when it tries to fold the tail and
has to emit runtime memory disambiguation checks. This happens as soon as
you try to do something like:
#pragma clang loop predicate(enable) for (int i=0; i < N; i++) A[i] = B[i] + C[i];
where A, B, and C are integer pointers, not annotated with e.g. the restrict
type qualifier.
However, it looks like the logic to deal with this is all in place, so this
simply removes the assert.
also here