https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118215
Bug ID: 118215
Summary: Miss runtime alias check for vectorization
Product: gcc
Version: unknown
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: fxue at os dot amperecomputing.com
Target Milestone: ---
The following case could not be vectorized by gcc, but could by llvm trunk,
which introduces multiversioning with runtime alias checks among "sum" and "a",
"b".
void foo(const char *a, const char *b, int stride, int n, int *sum)
{
*sum = 0;
for (int i = 0; i < n; ++i) {
#pragma GCC unroll 0
for (int j = 0; j < 16; ++j) {
*sum += a[j] - b[j];
}
a += stride;
b += stride;
}
}