1! { dg-additional-options "-O3" } 2! 3! With -O3 the static local variable A.10 generated for 4! the array constructor [-2, -4, ..., -20] is optimized 5! away - which has to be handled in the offload_vars table. 6! 7program main 8 implicit none (type, external) 9 integer :: j 10 integer, allocatable :: A(:) 11 12 A = [(3*j, j=1, 10)] 13 call bar (A) 14 deallocate (A) 15contains 16 subroutine bar (array) 17 integer :: i 18 integer :: array(:) 19 20 !$omp target map(from:array) 21 !$acc parallel copyout(array) 22 array = [(-2*i, i = 1, size(array))] 23 !$omp do private(array) 24 !$acc loop gang private(array) 25 do i = 1, 10 26 array(i) = 9*i 27 end do 28 if (any (array /= [(-2*i, i = 1, 10)])) error stop 2 29 !$omp end target 30 !$acc end parallel 31 end subroutine bar 32end 33