| ! Offloading test checking interaction of mapping a full common block in a | |
| ! target region | |
| ! REQUIRES: flang, amdgcn-amd-amdhsa | |
| ! UNSUPPORTED: nvptx64-nvidia-cuda | |
| ! UNSUPPORTED: nvptx64-nvidia-cuda-LTO | |
| ! UNSUPPORTED: aarch64-unknown-linux-gnu | |
| ! UNSUPPORTED: x86_64-unknown-linux-gnu | |
| ! RUN: %libomptarget-compile-fortran-run-and-check-generic | |
| program main | |
| implicit none | |
| common /var_common/ var1, var2 | |
| integer :: var1, var2 | |
| call modify_1 | |
| !$omp target map(tofrom: /var_common/) | |
| var1 = var1 + 20 | |
| var2 = var2 + 50 | |
| !$omp end target | |
| call modify_2 | |
| print *, var1 | |
| print *, var2 | |
| end program | |
| subroutine modify_1 | |
| common /var_common/ var1, var2 | |
| integer :: var1, var2 | |
| !$omp target map(tofrom: /var_common/) | |
| var1 = var1 + 20 | |
| var2 = var2 + 30 | |
| !$omp end target | |
| end | |
| subroutine modify_2 | |
| common /var_common/ var1, var2 | |
| integer :: var1, var2 | |
| !$omp target map(tofrom: /var_common/) | |
| var1 = var1 * 10 | |
| var2 = var2 * 10 | |
| !$omp end target | |
| end | |
| !CHECK: 400 | |
| !CHECK: 800 |