// { dg-do compile } // { dg-additional-options "-fdump-tree-gimple" } #include // Test named mapper invocation. struct S { int *ptr; int size; }; int main (int argc, char *argv[]) { int N = 1024; #pragma omp declare mapper (mapN:struct S s) map(to:s.ptr, s.size) \ map(s.ptr[:N]) struct S s; s.ptr = (int *) malloc (sizeof (int) * N); #pragma omp target map(mapper(mapN), tofrom: s) // { dg-final { scan-tree-dump {map\(struct:s \[len: 2\]\) map\(alloc:s\.ptr \[len: [0-9]+\]\) map\(to:s\.size \[len: [0-9]+\]\) map\(tofrom:\*_[0-9]+ \[len: _[0-9]+\]\) map\(attach:s\.ptr \[bias: 0\]\)} "gimple" } } { for (int i = 0; i < N; i++) s.ptr[i]++; } return 0; }