[flang][OpenMP]Make omp.wsloop arguments appear in memory (#1277)
authorMats Petersson <6831237+Leporacanthicus@users.noreply.github.com>
Mon, 17 Jan 2022 13:54:09 +0000 (13:54 +0000)
committerMats Petersson <mats.petersson@arm.com>
Wed, 1 Jun 2022 16:20:06 +0000 (17:20 +0100)
commitdc4bf2c33ce48ab03ba2a497e4d2c875162b0435
tree07c70373f5a88b8290e62cc152dffb27d0c3c433
parent53753531bc19bae816cf0cbf9e713ce0333ba091
[flang][OpenMP]Make omp.wsloop arguments appear in memory (#1277)

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.

Reviewed By: peixin

Differential Revision: https://reviews.llvm.org/D126711
flang/lib/Lower/OpenMP.cpp
flang/test/Lower/OpenMP/omp-parallel-wsloop.f90
flang/test/Lower/OpenMP/omp-unstructured.f90
flang/test/Lower/OpenMP/omp-wsloop-chunks.f90
flang/test/Lower/OpenMP/omp-wsloop-collapse.f90
flang/test/Lower/OpenMP/omp-wsloop-variable.f90
flang/test/Lower/OpenMP/omp-wsloop.f90