This is an archive of the discontinued LLVM Phabricator instance.

[OpenMP] Avoid VLAs for some reductions on array sections
ClosedPublic

Authored by Hahnfeld on Oct 20 2017, 12:25 PM.

Details

Summary

In some cases the compiler can deduce the length of an array section
as constants. With this information, VLAs can be avoided in place of
a constant sized array or even a scalar value if the length is 1.
Example:

int a[4], b[2];
pragma omp parallel reduction(+: a[1:2], b[1:1])
{ }

For chained array sections, this optimization is restricted to cases
where all array sections except the last have a constant length 1.
This trivially guarantees that there are no holes in the memory region
that needs to be privatized.
Example:

int c[3][4];
pragma omp parallel reduction(+: c[1:1][1:2])
{ }

Diff Detail

Repository
rL LLVM

Event Timeline

Hahnfeld created this revision.Oct 20 2017, 12:25 PM
This revision is now accepted and ready to land.Oct 20 2017, 12:28 PM
This revision was automatically updated to reflect the committed changes.
This revision is now accepted and ready to land.Oct 20 2017, 1:17 PM
This revision was automatically updated to reflect the committed changes.