diff options
author | agozillon <Andrew.Gozillon@amd.com> | 2025-01-29 17:51:33 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-01-29 17:51:33 +0100 |
commit | e0054e984cac39322afa32a6e68fc794f0081f49 (patch) | |
tree | 09c38c492b9ba4f5460495fbc9312100862c9080 /llvm/lib/Object/ELFObjectFile.cpp | |
parent | 67752f61917994e4daa6f5d30e39e237c26a73de (diff) | |
download | llvm-e0054e984cac39322afa32a6e68fc794f0081f49.zip llvm-e0054e984cac39322afa32a6e68fc794f0081f49.tar.gz llvm-e0054e984cac39322afa32a6e68fc794f0081f49.tar.bz2 |
[MLIR][OpenMP] Emit nullary check for mapped pointer members and appropriate size select based on results (#124604)
This PR aims to fix a mapping error when trying to map nullary elements
of a record type (primary example is allocatables/pointer types in
Fortran at the moment). This should be legal to map, just not write to
without pointing to anything within the target region. A common Fortran
OpenMP idiom/example where this is useful can be found in the added
Fortran offload example.
The runtime error arises when we try to map the pointer member utilising
a prescribed constant size that we receive from the lowered type,
resulting in mapping of data that will be non-existent when there is no
allocated data. The fix in this case is to emit a runtime check to see
if the data has been allocated, if it hasn't been we select a size of 0,
if it has we emit the usual type size.
Diffstat (limited to 'llvm/lib/Object/ELFObjectFile.cpp')
0 files changed, 0 insertions, 0 deletions