/* { dg-do compile } */ #include #define N 20 struct s { int base[N]; }; int main (void) { struct s v; #pragma acc parallel copy(v, v.base[0:N]) { } #pragma acc parallel copyin(v, v.base[0:N]) { } #pragma acc parallel copyout(v, v.base[0:N]) { } #pragma acc parallel copy(v) copyin(v.base[0:N]) { } #pragma acc parallel copy(v) copyout(v.base[0:N]) { } #pragma acc parallel copy(v) present(v.base[0:N]) { } #pragma acc parallel copyin(v) present(v.base[0:N]) { } #pragma acc parallel copyout(v) present(v.base[0:N]) { } #pragma acc enter data copyin(v, v.base[0:N]) #pragma acc update device(v, v.base[0:N]) #pragma acc exit data delete(v, v.base[0:N]) #pragma acc parallel copyin(v) copy(v.base[0:N]) /* { dg-error "data movement for component 'v\\.(s::)?base\\\[0\\\]' is not compatible with movement for struct 'v'" "" { target *-*-* } .-1 } */ { } #pragma acc parallel copyout(v) copy(v.base[0:N]) /* { dg-error "data movement for component 'v\\.(s::)?base\\\[0\\\]' is not compatible with movement for struct 'v'" "" { target *-*-* } .-1 } */ { } #pragma acc parallel present(v) copy(v.base[0:N]) /* { dg-error "data movement for component 'v\\.(s::)?base\\\[0\\\]' is not compatible with movement for struct 'v'" "" { target *-*-* } .-1 } */ { } #pragma acc parallel present(v) copyin(v.base[0:N]) /* { dg-error "data movement for component 'v\\.(s::)?base\\\[0\\\]' is not compatible with movement for struct 'v'" "" { target *-*-* } .-1 } */ { } #pragma acc parallel present(v) copyout(v.base[0:N]) /* { dg-error "data movement for component 'v\\.(s::)?base\\\[0\\\]' is not compatible with movement for struct 'v'" "" { target *-*-* } .-1 } */ { } #pragma acc parallel present(v) no_create(v.base[0:N]) /* { dg-error "data movement for component 'v\\.(s::)?base\\\[0\\\]' is not compatible with movement for struct 'v'" "" { target *-*-* } .-1 } */ { } #pragma acc parallel no_create(v) present(v.base[0:N]) /* { dg-error "data movement for component 'v\\.(s::)?base\\\[0\\\]' is not compatible with movement for struct 'v'" "" { target *-*-* } .-1 } */ { } return 0; }