1! Offloading test checking interaction of mapping all the members of a common 2! block with a mix of explicit and implicit mapping to a target region 3! REQUIRES: flang, amdgcn-amd-amdhsa 4! UNSUPPORTED: nvptx64-nvidia-cuda 5! UNSUPPORTED: nvptx64-nvidia-cuda-LTO 6! UNSUPPORTED: aarch64-unknown-linux-gnu 7! UNSUPPORTED: aarch64-unknown-linux-gnu-LTO 8! UNSUPPORTED: x86_64-unknown-linux-gnu 9! UNSUPPORTED: x86_64-unknown-linux-gnu-LTO 10 11! RUN: %libomptarget-compile-fortran-run-and-check-generic 12program main 13 implicit none 14 common /var_common/ var1, var2, var3 15 integer :: var1, var2, var3 16 17 call modify_1 18 19 !$omp target map(tofrom: var2) 20 var2 = var2 + var3 21 !$omp end target 22 23 call modify_2 24 25 print *, var1 26 print *, var2 27 print *, var3 28end program 29 30subroutine modify_1 31 common /var_common/ var1, var2, var3 32 integer :: var1, var2, var3 33 34 !$omp target map(tofrom: /var_common/) 35 var1 = 10 36 var2 = 20 37 var3 = 30 38 !$omp end target 39end 40 41subroutine modify_2 42 common /var_common/ var1, var2, var3 43 integer :: var1, var2, var3 44 integer :: copy 45 46 !$omp target map(tofrom: copy) 47 copy = var2 + var3 48 !$omp end target 49 50 print *, copy 51end 52 53!CHECK: 80 54!CHECK: 10 55!CHECK: 50 56!CHECK: 30 57