[flang-commits] [flang] [llvm] [mlir] [MLIR][OpenMP] Introduce overlapped record type map support (PR #119588)

Akash Banerjee via flang-commits flang-commits at lists.llvm.org
Wed Sep 24 08:55:37 PDT 2025


================
@@ -0,0 +1,47 @@
+! Basic offloading test checking the interaction of an overlapping
+! member map.
+! REQUIRES: flang, amdgpu
+
+! RUN: %libomptarget-compile-fortran-run-and-check-generic
+program main
+    implicit none
+    integer :: i
+
+    type dtype2
+        integer :: int
+        real :: float
+    end type dtype2
+
+    type dtype1
+        character (LEN=30) :: characters
+        type(dtype2) :: internal_dtype2
+    end type dtype1
+
+    type dtype
+        integer :: elements(10)
+        type(dtype1) :: internal_dtype
+        integer :: value
+    end type dtype
+
+    type (dtype) :: single_dtype
+
+    do i = 1, 10
+      single_dtype%elements(i) = 0
+    end do
+
+  !$omp target map(to: single_dtype) map(tofrom: single_dtype%internal_dtype%internal_dtype2, single_dtype%value)
+    single_dtype%value = 20
+    do i = 1, 10
+      single_dtype%elements(i) = i
+    end do
+    single_dtype%internal_dtype%internal_dtype2%float = 32.0
+  !$omp end target
+
----------------
TIFitis wrote:

Can you also test partial overlap here? Something like:

```
  !$omp target map(tofrom: single_dtype%internal_dtype, single_dtype%internal_dtype%internal_dtype2%float)
    single_dtype%internal_dtype%internal_dtype2%float = 123.5
    single_dtype%internal_dtype%characters(1:1) = "Z"
  !$omp end target
```

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


More information about the flang-commits mailing list