[flang-commits] [flang] [mlir] [openmp] [Flang][OpenMP] Initial mapping of Fortran pointers and allocatables for target devices (PR #71766)

Slava Zakharin via flang-commits flang-commits at lists.llvm.org
Wed Nov 22 15:13:55 PST 2023


vzakhari wrote:

I think you would not have to bother about the disconnect if after the lowering the `map_info`'s reference the "locations" of the corresponding members via `varPtrPtr`.  As in my example:
```
%0 = mapinfo varPtr(%base_addr) varPtrPtr(%base_addr_addr) (to)
%1 = mapinfo varPtr(%addendum_addr) varPtrPtr(%addendum_addr_addr) (to)
%2 = mapinfo varPtr(%descAddr) members(%0, %1) (to)
```

The `%base_addr_addr` and `%addendum_addr_addr` are the addresses pointing into the original descriptor, i.e. they are the offsetted addresses starting from `%descAddr`.

Note that in this notation the `%0` and `%1` also follow their definition, i.e. that `varPtr` is mapped to the device and then attached into the device memory corresponding to `varPtrPtr`.  This is what effectively happens in the end, except that when they are used as `members` operands there are more actions that happen alongside, e.g. that the whole descriptor is mapped as well.

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


More information about the flang-commits mailing list