! REQUIRES: flang, amdgpu ! RUN: %libomptarget-compile-fortran-run-and-check-generic program main implicit none integer :: result ! CHECK: 100 result = 0 !$omp target map(from: result) block integer, allocatable :: arr(:) integer :: i allocate(arr(4)) do i = 1, 4 arr(i) = i * 10 end do result = arr(1) + arr(2) + arr(3) + arr(4) deallocate(arr) end block !$omp end target print *, result ! CHECK: 21 result = 0 !$omp target map(from: result) block integer, allocatable :: mat(:,:) allocate(mat(2, 3)) mat(1,1) = 1; mat(2,1) = 2 mat(1,2) = 3; mat(2,2) = 4 mat(1,3) = 5; mat(2,3) = 6 result = mat(1,1) + mat(2,1) + mat(1,2) + mat(2,2) + mat(1,3) + mat(2,3) deallocate(mat) end block !$omp end target print *, result ! CHECK: 17 result = 0 !$omp target map(from: result) block integer, allocatable :: arr(:) allocate(arr(8)) result = size(arr) + lbound(arr, 1) + ubound(arr, 1) deallocate(arr) end block !$omp end target print *, result end program main