| ! { dg-do run } |
| ! { dg-require-effective-target offload_device_nonshared_as } |
| |
| program e_57_1 |
| use omp_lib, only: omp_is_initial_device |
| integer :: a, b |
| logical :: c, d |
| |
| a = 100 |
| b = 0 |
| |
| !$omp target map(from: c) if(a > 200 .and. a < 400) |
| c = omp_is_initial_device () |
| !$omp end target |
| |
| !$omp target data map(to: b) if(a > 200 .and. a < 400) |
| !$omp target map(from: b, d) |
| b = 100 |
| d = omp_is_initial_device () |
| !$omp end target |
| !$omp end target data |
| |
| if (b /= 100 .or. .not. c .or. d) stop 1 |
| |
| a = a + 200 |
| b = 0 |
| |
| !$omp target map(from: c) if(a > 200 .and. a < 400) |
| c = omp_is_initial_device () |
| !$omp end target |
| |
| !$omp target data map(to: b) if(a > 200 .and. a < 400) |
| !$omp target map(from: b, d) |
| b = 100 |
| d = omp_is_initial_device () |
| !$omp end target |
| !$omp end target data |
| |
| if (b /= 0 .or. c .or. d) stop 2 |
| |
| a = a + 200 |
| b = 0 |
| |
| !$omp target map(from: c) if(a > 200 .and. a < 400) |
| c = omp_is_initial_device () |
| !$omp end target |
| |
| !$omp target data map(to: b) if(a > 200 .and. a < 400) |
| !$omp target map(from: b, d) |
| b = 100 |
| d = omp_is_initial_device () |
| !$omp end target |
| !$omp end target data |
| |
| if (b /= 100 .or. .not. c .or. d) stop 3 |
| end program |