1*e532241bSKareem Ergawy! Test implicit mapping of alloctable record fields. 2*e532241bSKareem Ergawy 3*e532241bSKareem Ergawy! REQUIRES: flang, amdgpu 4*e532241bSKareem Ergawy 5*e532241bSKareem Ergawy! This fails only because it needs the Fortran runtime built for device. If this 6*e532241bSKareem Ergawy! is avaialbe, this test succeeds when run. 7*e532241bSKareem Ergawy! XFAIL: * 8*e532241bSKareem Ergawy 9*e532241bSKareem Ergawy! RUN: %libomptarget-compile-fortran-generic 10*e532241bSKareem Ergawy! RUN: env LIBOMPTARGET_INFO=16 %libomptarget-run-generic 2>&1 | %fcheck-generic 11*e532241bSKareem Ergawyprogram test_implicit_field_mapping 12*e532241bSKareem Ergawy implicit none 13*e532241bSKareem Ergawy 14*e532241bSKareem Ergawy type record_t 15*e532241bSKareem Ergawy real, allocatable :: not_to_implicitly_map(:) 16*e532241bSKareem Ergawy real, allocatable :: to_implicitly_map(:) 17*e532241bSKareem Ergawy end type 18*e532241bSKareem Ergawy 19*e532241bSKareem Ergawy type(record_t) :: dst_record 20*e532241bSKareem Ergawy real :: src_array(10) 21*e532241bSKareem Ergawy real :: dst_sum, src_sum 22*e532241bSKareem Ergawy integer :: i 23*e532241bSKareem Ergawy 24*e532241bSKareem Ergawy call random_number(src_array) 25*e532241bSKareem Ergawy dst_sum = 0 26*e532241bSKareem Ergawy src_sum = 0 27*e532241bSKareem Ergawy 28*e532241bSKareem Ergawy do i=1,10 29*e532241bSKareem Ergawy src_sum = src_sum + src_array(i) 30*e532241bSKareem Ergawy end do 31*e532241bSKareem Ergawy print *, "src_sum=", src_sum 32*e532241bSKareem Ergawy 33*e532241bSKareem Ergawy !$omp target map(from: dst_sum) 34*e532241bSKareem Ergawy dst_record%to_implicitly_map = src_array 35*e532241bSKareem Ergawy dst_sum = 0 36*e532241bSKareem Ergawy 37*e532241bSKareem Ergawy do i=1,10 38*e532241bSKareem Ergawy dst_sum = dst_sum + dst_record%to_implicitly_map(i) 39*e532241bSKareem Ergawy end do 40*e532241bSKareem Ergawy !$omp end target 41*e532241bSKareem Ergawy 42*e532241bSKareem Ergawy print *, "dst_sum=", dst_sum 43*e532241bSKareem Ergawy 44*e532241bSKareem Ergawy if (src_sum == dst_sum) then 45*e532241bSKareem Ergawy print *, "Test succeeded!" 46*e532241bSKareem Ergawy else 47*e532241bSKareem Ergawy print *, "Test failed!", " dst_sum=", dst_sum, "vs. src_sum=", src_sum 48*e532241bSKareem Ergawy endif 49*e532241bSKareem Ergawyend program 50*e532241bSKareem Ergawy 51*e532241bSKareem Ergawy! CHECK: "PluginInterface" device {{[0-9]+}} info: Launching kernel {{.*}} 52*e532241bSKareem Ergawy! CHECK: Test succeeded! 53