1*37234499Sagozillon! Offloading test checking interaction of mapping a declare target link common 2*37234499Sagozillon! block with device_type any to a target region 3aec735cfSagozillon! REQUIRES: flang, amdgcn-amd-amdhsa 4aec735cfSagozillon! UNSUPPORTED: nvptx64-nvidia-cuda 5aec735cfSagozillon! UNSUPPORTED: nvptx64-nvidia-cuda-LTO 6aec735cfSagozillon! UNSUPPORTED: aarch64-unknown-linux-gnu 7aec735cfSagozillon! UNSUPPORTED: aarch64-unknown-linux-gnu-LTO 81a0cf245SJan Patrick Lehr! UNSUPPORTED: x86_64-unknown-linux-gnu 91a0cf245SJan Patrick Lehr! UNSUPPORTED: x86_64-unknown-linux-gnu-LTO 10aec735cfSagozillon 11aec735cfSagozillon! RUN: %libomptarget-compile-fortran-run-and-check-generic 12aec735cfSagozillonprogram main 13aec735cfSagozillon implicit none 14aec735cfSagozillon common /var_common/ var1, var2, var3 15aec735cfSagozillon integer :: var1, var2, var3 16aec735cfSagozillon !$omp declare target link(/var_common/) 17aec735cfSagozillon 18aec735cfSagozillon call modify_1 19aec735cfSagozillon 20aec735cfSagozillon !$omp target map(tofrom: var2) 21aec735cfSagozillon var2 = var2 + var3 22aec735cfSagozillon !$omp end target 23aec735cfSagozillon 24aec735cfSagozillon call modify_2 25aec735cfSagozillon call modify_3 26aec735cfSagozillon 27aec735cfSagozillon print *, var1 28aec735cfSagozillon print *, var2 29aec735cfSagozillon print *, var3 30aec735cfSagozillonend program 31aec735cfSagozillon 32aec735cfSagozillonsubroutine modify_1 33aec735cfSagozillon common /var_common/ var1, var2, var3 34aec735cfSagozillon integer :: var1, var2, var3 35aec735cfSagozillon 36aec735cfSagozillon!$omp target map(tofrom: /var_common/) 37aec735cfSagozillon var1 = 10 38aec735cfSagozillon var2 = 20 39aec735cfSagozillon var3 = 30 40aec735cfSagozillon!$omp end target 41aec735cfSagozillon 42aec735cfSagozillonend 43aec735cfSagozillon 44aec735cfSagozillonsubroutine modify_2 45aec735cfSagozillon common /var_common/ var1, var2, var3 46aec735cfSagozillon integer :: var1, var2, var3 47aec735cfSagozillon integer :: copy 48aec735cfSagozillon 49aec735cfSagozillon!$omp target map(tofrom: copy) 50aec735cfSagozillon copy = var2 + var3 51aec735cfSagozillon!$omp end target 52aec735cfSagozillon 53aec735cfSagozillon print *, copy 54aec735cfSagozillonend 55aec735cfSagozillon 56aec735cfSagozillonsubroutine modify_3 57aec735cfSagozillon common /var_common/ var1, var2, var3 58aec735cfSagozillon integer :: var1, var2, var3 59aec735cfSagozillon 60aec735cfSagozillon!$omp target map(tofrom: /var_common/) 61aec735cfSagozillon var1 = var1 + var1 62aec735cfSagozillon var2 = var2 + var2 63aec735cfSagozillon var3 = var3 + var3 64aec735cfSagozillon!$omp end target 65aec735cfSagozillonend 66aec735cfSagozillon 67aec735cfSagozillon!CHECK: 80 68aec735cfSagozillon!CHECK: 20 69aec735cfSagozillon!CHECK: 100 70aec735cfSagozillon!CHECK: 60