xref: /llvm-project/offload/test/offloading/fortran/target-map-common-block.f90 (revision 372344995568cae076477a8b0e98fcdec7c49379)
1*37234499Sagozillon! Offloading test checking interaction of mapping a full common block in a
2*37234499Sagozillon! 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
15aec735cfSagozillon    integer :: var1, var2
16aec735cfSagozillon
17aec735cfSagozillon    call modify_1
18aec735cfSagozillon
19aec735cfSagozillon  !$omp target map(tofrom: /var_common/)
20aec735cfSagozillon      var1 = var1 + 20
21aec735cfSagozillon      var2 = var2 + 50
22aec735cfSagozillon  !$omp end target
23aec735cfSagozillon
24aec735cfSagozillon    call modify_2
25aec735cfSagozillon
26aec735cfSagozillon    print *, var1
27aec735cfSagozillon    print *, var2
28aec735cfSagozillonend program
29aec735cfSagozillon
30aec735cfSagozillonsubroutine modify_1
31aec735cfSagozillon  common /var_common/ var1, var2
32aec735cfSagozillon  integer :: var1, var2
33aec735cfSagozillon!$omp target map(tofrom: /var_common/)
34aec735cfSagozillon  var1 = var1 + 20
35aec735cfSagozillon  var2 = var2 + 30
36aec735cfSagozillon!$omp end target
37aec735cfSagozillonend
38aec735cfSagozillon
39aec735cfSagozillonsubroutine modify_2
40aec735cfSagozillon  common /var_common/ var1, var2
41aec735cfSagozillon  integer :: var1, var2
42aec735cfSagozillon!$omp target map(tofrom: /var_common/)
43aec735cfSagozillon  var1 = var1 * 10
44aec735cfSagozillon  var2 = var2 * 10
45aec735cfSagozillon!$omp end target
46aec735cfSagozillonend
47aec735cfSagozillon
48aec735cfSagozillon!CHECK: 400
49aec735cfSagozillon!CHECK: 800
50