@@ -18,23 +18,24 @@ void foo(int **t1d) {
18
18
19
19
for (j = 0 ; j < 3 ; j++)
20
20
(*t1d)[j] = 0 ;
21
- #pragma omp target map(tofrom : (*t1d)[0 : 3])
21
+ #pragma omp target map(tofrom : (*t1d)[0 : 3]) map(alloc : *t1d)
22
22
{ (*t1d)[1 ] = 1 ; }
23
23
// CHECK: 1
24
24
printf (" %d\n " , (*t1d)[1 ]);
25
- #pragma omp target map(tofrom : (**t2d)[0 : 3])
25
+ #pragma omp target map(tofrom : (**t2d)[0 : 3]) map(alloc : **t2d, *t2d)
26
26
{ (**t2d)[1 ] = 2 ; }
27
27
// CHECK: 2
28
28
printf (" %d\n " , (**t2d)[1 ]);
29
- #pragma omp target map(tofrom : (***t3d)[0 : 3])
29
+ #pragma omp target map(tofrom : (***t3d)[0 : 3]) \
30
+ map (alloc : ***t3d, **t3d, *t3d)
30
31
{ (***t3d)[1 ] = 3 ; }
31
32
// CHECK: 3
32
33
printf (" %d\n " , (***t3d)[1 ]);
33
- #pragma omp target map(tofrom : (**t1d))
34
+ #pragma omp target map(tofrom : (**t1d)) map(alloc : *t1d)
34
35
{ (*t1d)[0 ] = 4 ; }
35
36
// CHECK: 4
36
37
printf (" %d\n " , (*t1d)[0 ]);
37
- #pragma omp target map(tofrom : (*(*(t1d + a) + b)))
38
+ #pragma omp target map(tofrom : (*(*(t1d + a) + b))) map(to : *(t1d + a))
38
39
{ *(*(t1d + a) + b) = 5 ; }
39
40
// CHECK: 5
40
41
printf (" %d\n " , *(*(t1d + a) + b));
@@ -49,7 +50,7 @@ void bar() {
49
50
for (int i = 0 ; i < 3 ; i++) {
50
51
(**a)[1 ] = i;
51
52
}
52
- #pragma omp target map((**a)[ : 3])
53
+ #pragma omp target map((**a)[ : 3]) map(alloc : **a, *a)
53
54
{
54
55
(**a)[1 ] = 6 ;
55
56
// CHECK: 6
@@ -73,7 +74,8 @@ void zoo(int **f, SSA *sa) {
73
74
*(f + sa->i + 1 ) = t;
74
75
*(sa->sa ->i + *(f + sa->i + 1 )) = 4 ;
75
76
printf (" %d\n " , *(sa->sa ->i + *(1 + sa->i + f)));
76
- #pragma omp target map(sa, *(sa->sa->i + *(1 + sa->i + f)))
77
+ #pragma omp target map(*(sa->sa->i + *(1 + sa->i + f))) map(alloc : sa->sa) \
78
+ map (to : sa->i ) map (to : sa->sa ->i ) map (to : *(1 + sa->i + f))
77
79
{ *(sa->sa ->i + *(1 + sa->i + f)) = 7 ; }
78
80
// CHECK: 7
79
81
printf (" %d\n " , *(sa->sa ->i + *(1 + sa->i + f)));
@@ -87,13 +89,13 @@ void xoo() {
87
89
88
90
void yoo (int **x) {
89
91
*x = (int *)malloc (2 * sizeof (int ));
90
- #pragma omp target map(**x)
92
+ #pragma omp target map(**x) map(alloc : *x)
91
93
{
92
94
**x = 8 ;
93
95
// CHECK: 8
94
96
printf (" %d\n " , **x);
95
97
}
96
- #pragma omp target map(*(*x + 1))
98
+ #pragma omp target map(*(*x + 1)) map(alloc : *x)
97
99
{
98
100
*(*x + 1 ) = 9 ;
99
101
// CHECK: 9
0 commit comments