1 /* { dg-do compile } */
2 /* { dg-additional-options "-fdump-tree-gimple" } */
6 void bar (int, char *, struct S
, int *);
7 #pragma omp declare target to (bar)
11 f1 (int sc1
, struct S ag1
, int *pt1
)
16 bar (sc1
, ar1
, ag1
, pt1
);
17 /* { dg-final { scan-tree-dump "firstprivate\\(sc1\\)" "gimple" } } */
18 /* { dg-final { scan-tree-dump "map\\(tofrom:ar1" "gimple" } } */
19 /* { dg-final { scan-tree-dump "map\\(tofrom:ag1" "gimple" } } */
20 /* { dg-final { scan-tree-dump "map\\(firstprivate:pt1 .pointer assign" "gimple" } } */
24 f2 (int sc2
, struct S ag2
, int *pt2
)
28 #pragma omp target firstprivate (sc2, ar2, ag2, pt2) defaultmap (none)
29 bar (sc2
, ar2
, ag2
, pt2
);
30 /* { dg-final { scan-tree-dump "firstprivate\\(sc2\\)" "gimple" } } */
31 /* { dg-final { scan-tree-dump "firstprivate\\(ar2\\)" "gimple" } } */
32 /* { dg-final { scan-tree-dump "firstprivate\\(ag2\\)" "gimple" } } */
33 /* { dg-final { scan-tree-dump "firstprivate\\(pt2\\)" "gimple" } } */
37 f3 (int sc3
, struct S ag3
, int *pt3
)
41 #pragma omp target defaultmap(none:scalar) defaultmap(none:aggregate) \
42 map (sc3, ar3, ag3, pt3) defaultmap(none:pointer)
43 bar (sc3
, ar3
, ag3
, pt3
);
44 /* { dg-final { scan-tree-dump "map\\(tofrom:sc3" "gimple" } } */
45 /* { dg-final { scan-tree-dump "map\\(tofrom:ar3" "gimple" } } */
46 /* { dg-final { scan-tree-dump "map\\(tofrom:ag3" "gimple" } } */
47 /* { dg-final { scan-tree-dump "map\\(tofrom:pt3" "gimple" } } */
51 f4 (int sc4
, struct S ag4
, int *pt4
)
55 #pragma omp target defaultmap(tofrom:scalar)
56 bar (sc4
, ar4
, ag4
, pt4
);
57 /* { dg-final { scan-tree-dump "map\\(tofrom:sc4" "gimple" } } */
58 /* { dg-final { scan-tree-dump "map\\(tofrom:ar4" "gimple" } } */
59 /* { dg-final { scan-tree-dump "map\\(tofrom:ag4" "gimple" } } */
60 /* { dg-final { scan-tree-dump "map\\(firstprivate:pt4 .pointer assign" "gimple" } } */
64 f5 (int sc5
, struct S ag5
, int *pt5
)
68 #pragma omp target defaultmap(to)
69 bar (sc5
, ar5
, ag5
, pt5
);
70 /* { dg-final { scan-tree-dump "map\\(to:sc5" "gimple" } } */
71 /* { dg-final { scan-tree-dump "map\\(to:ar5" "gimple" } } */
72 /* { dg-final { scan-tree-dump "map\\(to:ag5" "gimple" } } */
73 /* { dg-final { scan-tree-dump "map\\(to:pt5" "gimple" } } */
77 f6 (int sc6
, struct S ag6
, int *pt6
)
81 #pragma omp target defaultmap(firstprivate)
82 bar (sc6
, ar6
, ag6
, pt6
);
83 /* { dg-final { scan-tree-dump "firstprivate\\(sc6\\)" "gimple" } } */
84 /* { dg-final { scan-tree-dump "firstprivate\\(ar6\\)" "gimple" } } */
85 /* { dg-final { scan-tree-dump "firstprivate\\(ag6\\)" "gimple" } } */
86 /* { dg-final { scan-tree-dump "firstprivate\\(pt6\\)" "gimple" } } */
90 f7 (int sc7
, struct S ag7
, int *pt7
)
94 #pragma omp target defaultmap(alloc: scalar) defaultmap(from: aggregate) defaultmap(default: pointer)
100 for (i
= 0; i
< N
; ++i
)
102 bar (sc7
, ar7
, ag7
, pt7
);
104 /* { dg-final { scan-tree-dump "map\\(alloc:sc7" "gimple" } } */
105 /* { dg-final { scan-tree-dump "map\\(from:ar7" "gimple" } } */
106 /* { dg-final { scan-tree-dump "map\\(from:ag7" "gimple" } } */
107 /* { dg-final { scan-tree-dump "map\\(firstprivate:pt7 .pointer assign" "gimple" } } */
111 f8 (int sc8
, struct S ag8
, int *pt8
)
115 #pragma omp target defaultmap(firstprivate:aggregate) defaultmap(none:scalar) \
116 defaultmap(tofrom:pointer) map(to: sc8)
117 bar (sc8
, ar8
, ag8
, pt8
);
118 /* { dg-final { scan-tree-dump "map\\(to:sc8" "gimple" } } */
119 /* { dg-final { scan-tree-dump "firstprivate\\(ar8\\)" "gimple" } } */
120 /* { dg-final { scan-tree-dump "firstprivate\\(ag8\\)" "gimple" } } */
121 /* { dg-final { scan-tree-dump "map\\(tofrom:pt8" "gimple" } } */
125 f9 (int sc9
, struct S ag9
)
129 #pragma omp target defaultmap(none) map(to: ar9, ag9) firstprivate (sc9)
130 bar (sc9
, ar9
, ag9
, &sc9
);