This is an archive of the discontinued LLVM Phabricator instance.

[flang][OpenMP]Make omp.wsloop arguments appear in memory (#1277)
ClosedPublic

Authored by Leporacanthicus on May 31 2022, 10:49 AM.

Details

Summary

As per issue #1196, the loop induction variable, which is an argument
in the omp.wsloop operation, does not have a memory location, so when
passed to a function or subroutine, the reference to the value is not
a memory location, but the value of the induction variable. The callee
function/subroutine is then trying to dereference memory at address 1
or some other "not a good memory location".

This is fixed by creating a temporary memory location and storing the
value of the induction variable in that.

Test fixes as a consequence of the changed code generated.

Add checking for some of the omp-unstructured.f90 to check for alloca,
store and load operations, to ensure the correct flow. Add a test
for CYCLE inside a omp-do loop.

Also convert to use -emit-fir in the omp-unstructrued, and make
the symbol matching consistent in the omp-wsloop-variable test.

Diff Detail

Event Timeline

Herald added projects: Restricted Project, Restricted Project. · View Herald Transcript
Leporacanthicus requested review of this revision.May 31 2022, 10:49 AM

Removed references to fir-dev issue numbers.

peixin accepted this revision.May 31 2022, 6:00 PM

LGTM. This should be the last OpenMP upstreaming patch except for @kiranchandramohan refactoring test cases. Thanks for the work.

This revision is now accepted and ready to land.May 31 2022, 6:00 PM