[OPENMP]Fix overlapped mapping for dereferenced pointer members.
authorAlexey Bataev <a.bataev@outlook.com>
Wed, 7 Jul 2021 12:26:53 +0000 (05:26 -0700)
committerAlexey Bataev <a.bataev@outlook.com>
Fri, 9 Jul 2021 19:51:26 +0000 (12:51 -0700)
commitab8989ab8710c693e83edbccf221746c897c835f
treec31b7e4332b1a49e4cc60802645f01138fe3e6ed
parent4a3b0556536d5a2555f7a19f953f0eec0f79f1a9
[OPENMP]Fix overlapped mapping for dereferenced pointer members.

If the base is used in a map clause and later we have a memberexpr with
this base, and the member is a pointer, and this pointer is dereferenced
anyhow (subscript, array section, dereference, etc.), such components
should be considered as overlapped, otherwise it may lead to incorrect
size computations, since we try to map a pointee as a part of the whole
struct, which is not true for the pointer members.

Differential Revision: https://reviews.llvm.org/D105562
clang/lib/CodeGen/CGOpenMPRuntime.cpp
clang/test/OpenMP/target_map_codegen_29.cpp
openmp/libomptarget/test/mapping/target_pointers_members_map.cpp [new file with mode: 0644]