[Mlir-commits] [flang] [mlir] [openmp] [Flang][OpenMP] Remove use of non reference values from MapInfoOp (PR #72444)

llvmlistbot at llvm.org llvmlistbot at llvm.org
Thu Nov 16 00:29:26 PST 2023


https://github.com/jeanPerier requested changes to this pull request.

I did not look at the details of the lowering code, but from the patch description and looking at the tests, I am afraid that the new approach may be incorrect since it is re-evaluating the specification expressions inside the target region, but there is no guarantee that the specification expression will evaluate again to the same value once the execution part of a subprogram started.

For instance, in the following program, if you are reading n again at the point of the target directive to get a extent, the extent will not be correct.

```
subroutine omp_target_implicit_bounds(n)
  integer :: n
  integer :: a(n, 1024)
  n = n + 1
   !$omp target
         a(11, 22) = 33
   !$omp end target
end subroutine omp_target_implicit_bounds
```

So if you need to pass the extents/lengths by reference, you will need to make temporary from the SSA values and map that instead.

https://github.com/llvm/llvm-project/pull/72444


More information about the Mlir-commits mailing list