| subroutine foo |
| type t |
| integer :: i, j |
| end type t |
| |
| type t2 |
| type(t) :: cc(3) |
| end type t2 |
| |
| type(t) x, y(3) |
| type(t2) :: z(3) |
| |
| ! OK - map whole aggregated variable |
| !$acc enter data copyin(x) |
| ! map(to:x [len: 8]) |
| |
| ! OK - map two components of the aggregated variable |
| !$acc enter data copyin(x%j, x%i) |
| |
| ! Bad - we cannot mix full-object and component accesses |
| !$acc enter data copyin(x, x%i) |
| ! { dg-error "Symbol .x. has mixed component and non-component accesses" "" { target "*-*-*" } 21 } |
| |
| ! Bad - we cannot do a strided access of 'x' |
| ! No C/C++ equivalent |
| !$acc enter data copyin(y(:)%i) |
| ! { dg-error "not a proper array section" "" { target "*-*-*" } 26 } |
| |
| ! Bad - again, a strided access |
| !$acc enter data copyin(z(1)%cc(:)%i) |
| ! { dg-error "not a proper array section" "" { target "*-*-*" } 30 } |
| end |