https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104917
Bug ID: 104917
Summary: No runtime alias test required for dependent
reductions
Product: gcc
Version: 12.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: rguenth at gcc dot gnu.org
Target Milestone: ---
The testcase from PR87561 shows a case where we have two in-memory reductions
that are possibly dependent but the runtime alias check isn't needed since
we only possibly re-order the summations in the reduction. Small C testcase:
void foo (double *x, double *y, double * __restrict a, double * __restrict b)
{
for (int i = 0; i < 1024; ++i)
{
x[i] += a[i];
y[i] += b[i];
}
}
here x[] and y[] are dependent but we can vectorize this just fine with
-fassociative-math, eliding the runtime alias check.