diff options
Diffstat (limited to 'gcc/testsuite/c-c++-common/gomp/defaultmap-2.c')
-rw-r--r-- | gcc/testsuite/c-c++-common/gomp/defaultmap-2.c | 131 |
1 files changed, 131 insertions, 0 deletions
diff --git a/gcc/testsuite/c-c++-common/gomp/defaultmap-2.c b/gcc/testsuite/c-c++-common/gomp/defaultmap-2.c new file mode 100644 index 00000000000..75dca230862 --- /dev/null +++ b/gcc/testsuite/c-c++-common/gomp/defaultmap-2.c @@ -0,0 +1,131 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-fdump-tree-gimple" } */ + +struct S { int s; }; +void foo (char *); +void bar (int, char *, struct S, int *); +#pragma omp declare target to (bar) +#define N 16 + +void +f1 (int sc1, struct S ag1, int *pt1) +{ + char ar1[N]; + foo (ar1); + #pragma omp target + bar (sc1, ar1, ag1, pt1); +/* { dg-final { scan-tree-dump "firstprivate\\(sc1\\)" "gimple" } } */ +/* { dg-final { scan-tree-dump "map\\(tofrom:ar1" "gimple" } } */ +/* { dg-final { scan-tree-dump "map\\(tofrom:ag1" "gimple" } } */ +/* { dg-final { scan-tree-dump "map\\(firstprivate:pt1 .pointer assign" "gimple" } } */ +} + +void +f2 (int sc2, struct S ag2, int *pt2) +{ + char ar2[N]; + foo (ar2); + #pragma omp target firstprivate (sc2, ar2, ag2, pt2) defaultmap (none) + bar (sc2, ar2, ag2, pt2); +/* { dg-final { scan-tree-dump "firstprivate\\(sc2\\)" "gimple" } } */ +/* { dg-final { scan-tree-dump "firstprivate\\(ar2\\)" "gimple" } } */ +/* { dg-final { scan-tree-dump "firstprivate\\(ag2\\)" "gimple" } } */ +/* { dg-final { scan-tree-dump "firstprivate\\(pt2\\)" "gimple" } } */ +} + +void +f3 (int sc3, struct S ag3, int *pt3) +{ + char ar3[N]; + foo (ar3); + #pragma omp target defaultmap(none:scalar) defaultmap(none:aggregate) \ + map (sc3, ar3, ag3, pt3) defaultmap(none:pointer) + bar (sc3, ar3, ag3, pt3); +/* { dg-final { scan-tree-dump "map\\(tofrom:sc3" "gimple" } } */ +/* { dg-final { scan-tree-dump "map\\(tofrom:ar3" "gimple" } } */ +/* { dg-final { scan-tree-dump "map\\(tofrom:ag3" "gimple" } } */ +/* { dg-final { scan-tree-dump "map\\(tofrom:pt3" "gimple" } } */ +} + +void +f4 (int sc4, struct S ag4, int *pt4) +{ + char ar4[N]; + foo (ar4); + #pragma omp target defaultmap(tofrom:scalar) + bar (sc4, ar4, ag4, pt4); +/* { dg-final { scan-tree-dump "map\\(tofrom:sc4" "gimple" } } */ +/* { dg-final { scan-tree-dump "map\\(tofrom:ar4" "gimple" } } */ +/* { dg-final { scan-tree-dump "map\\(tofrom:ag4" "gimple" } } */ +/* { dg-final { scan-tree-dump "map\\(firstprivate:pt4 .pointer assign" "gimple" } } */ +} + +void +f5 (int sc5, struct S ag5, int *pt5) +{ + char ar5[N]; + foo (ar5); + #pragma omp target defaultmap(to) + bar (sc5, ar5, ag5, pt5); +/* { dg-final { scan-tree-dump "map\\(to:sc5" "gimple" } } */ +/* { dg-final { scan-tree-dump "map\\(to:ar5" "gimple" } } */ +/* { dg-final { scan-tree-dump "map\\(to:ag5" "gimple" } } */ +/* { dg-final { scan-tree-dump "map\\(to:pt5" "gimple" } } */ +} + +void +f6 (int sc6, struct S ag6, int *pt6) +{ + char ar6[N]; + foo (ar6); + #pragma omp target defaultmap(firstprivate) + bar (sc6, ar6, ag6, pt6); +/* { dg-final { scan-tree-dump "firstprivate\\(sc6\\)" "gimple" } } */ +/* { dg-final { scan-tree-dump "firstprivate\\(ar6\\)" "gimple" } } */ +/* { dg-final { scan-tree-dump "firstprivate\\(ag6\\)" "gimple" } } */ +/* { dg-final { scan-tree-dump "firstprivate\\(pt6\\)" "gimple" } } */ +} + +void +f7 (int sc7, struct S ag7, int *pt7) +{ + char ar7[N]; + foo (ar7); + #pragma omp target defaultmap(alloc: scalar) defaultmap(from: aggregate) defaultmap(default: pointer) + { + int *q = &sc7; + *q = 6; + ag7.s = 5; + int i; + for (i = 0; i < N; ++i) + ar7[i] = 7; + bar (sc7, ar7, ag7, pt7); + } +/* { dg-final { scan-tree-dump "map\\(alloc:sc7" "gimple" } } */ +/* { dg-final { scan-tree-dump "map\\(from:ar7" "gimple" } } */ +/* { dg-final { scan-tree-dump "map\\(from:ag7" "gimple" } } */ +/* { dg-final { scan-tree-dump "map\\(firstprivate:pt7 .pointer assign" "gimple" } } */ +} + +void +f8 (int sc8, struct S ag8, int *pt8) +{ + char ar8[N]; + foo (ar8); + #pragma omp target defaultmap(firstprivate:aggregate) defaultmap(none:scalar) \ + defaultmap(tofrom:pointer) map(to: sc8) + bar (sc8, ar8, ag8, pt8); +/* { dg-final { scan-tree-dump "map\\(to:sc8" "gimple" } } */ +/* { dg-final { scan-tree-dump "firstprivate\\(ar8\\)" "gimple" } } */ +/* { dg-final { scan-tree-dump "firstprivate\\(ag8\\)" "gimple" } } */ +/* { dg-final { scan-tree-dump "map\\(tofrom:pt8" "gimple" } } */ +} + +void +f9 (int sc9, struct S ag9) +{ + char ar9[sc9 + 2]; + foo (ar9); + #pragma omp target defaultmap(none) map(to: ar9, ag9) firstprivate (sc9) + bar (sc9, ar9, ag9, &sc9); +} |