1! { dg-additional-options "-fdump-tree-original" } 2! { dg-additional-options "-fdump-tree-gimple" } 3! 4! PR fortran/92568 5! 6implicit none 7 type t 8 end type t 9 10 integer :: ii 11 integer :: arr(5) 12 integer, allocatable :: aii, aarr(:) 13 integer, pointer :: pii, parr(:) 14 15 character :: str1, str1arr(5), str1a, str1aarr(:), str1p, str1parr(:) 16 character(len=5) :: str5, str5arr(5), str5a, str5aarr(:), str5p, str5parr(:) 17 character(len=:) :: strXa, strXaarr(:), strXp, strXparr(:) 18 allocatable :: str1a, str1aarr, str5a, str5aarr, strXa, strXaarr 19 pointer :: str1p, str1parr, str5p, str5parr, strXp, strXparr 20 21 type(t) :: dt, dtarr(5), dta, dtaarr(:), dtp, dtparr(:) 22 allocatable :: dta, dtaarr 23 pointer :: dtp, dtparr 24 25 allocate(aii, aarr(5), str1a, str1aarr(5), dta, dtparr(5)) 26 allocate(pii, parr(5), str1p, str1parr(5), dtp, dtparr(5)) 27 allocate(character(len=7) :: strXa, strXaarr(5), strXp, strXparr(5)) 28 29 30 !$omp target defaultmap ( none ) & 31 !$omp& map(tofrom: ii, arr, aii, aarr, pii, parr) & 32 !$omp& map(tofrom: str1, str1arr, str1a, str1aarr, str1p, str1parr) & 33 !$omp& map(tofrom: str5, str5arr, str5a, str5aarr, str5p, str5parr) & 34 !$omp& map(tofrom: strXa, strXaarr, strXp, strXparr) & 35 !$omp& map(tofrom: dt, dtarr, dta, dtaarr, dtp, dtparr) 36 ii = 42; arr = 42; aii = 42; aarr = 42; pii = 42; parr = 42 37 str1 = ""; str1arr = ""; str1a = ""; str1aarr = ""; str1p = ""; str1parr = "" 38 str5 = ""; str5arr = ""; str5a = ""; str5aarr = ""; str5p = ""; str5parr = "" 39 strXa = ""; strXaarr = ""; strXp = ""; strXparr = "" 40 dt = t(); dtarr = t(); dta = t(); dtaarr = t(); dtp = t(); dtparr = t() 41 !$omp end target 42 43 44 !$omp target defaultmap(none : scalar) defaultmap(none : aggregate) & 45 !$omp& defaultmap(none : allocatable) defaultmap(none : pointer) & 46 !$omp& map(alloc: ii, arr, aii, aarr, pii, parr) & 47 !$omp& map(alloc: str1, str1arr, str1a, str1aarr, str1p, str1parr) & 48 !$omp& map(alloc: str5, str5arr, str5a, str5aarr, str5p, str5parr) & 49 !$omp& map(alloc: strXa, strXaarr, strXp, strXparr) & 50 !$omp& map(alloc: dt, dtarr, dta, dtaarr, dtp, dtparr) 51 ii = 42; arr = 42; aii = 42; aarr = 42; pii = 42; parr = 42 52 str1 = ""; str1arr = ""; str1a = ""; str1aarr = ""; str1p = ""; str1parr = "" 53 str5 = ""; str5arr = ""; str5a = ""; str5aarr = ""; str5p = ""; str5parr = "" 54 strXa = ""; strXaarr = ""; strXp = ""; strXparr = "" 55 dt = t(); dtarr = t(); dta = t(); dtaarr = t(); dtp = t(); dtparr = t() 56 !$omp end target 57end 58 59! { dg-final { scan-tree-dump-times "#pragma omp target map\\(tofrom:.* defaultmap\\(none\\)" 1 "original" } } 60! { dg-final { scan-tree-dump-times "#pragma omp target map\\(alloc:.* defaultmap\\(none:scalar\\) defaultmap\\(none:aggregate\\) defaultmap\\(none:allocatable\\) defaultmap\\(none:pointer\\)" 1 "original" } } 61