1 extern "C" void abort ();
3 __attribute__((noinline, noclone)) void
4 foo (int *&p, int *&q, int *&r, int n, int m)
8 #pragma omp target map(to:sep)
10 #pragma omp target data map(to:p[0:8])
12 /* For zero length array sections, p points to the start of
13 already mapped range, q to the end of it (with nothing mapped
14 after it), and r does not point to an mapped range. */
15 #pragma omp target map(alloc:p[:0]) map(to:q[:0]) map(from:r[:0]) private(i) map(from:err) firstprivate (s)
18 for (i = 0; i < 8; i++)
23 if (q != (int *) 0 || r != (int *) 0)
26 else if (p + 8 != q || r != s)
31 /* Implicit mapping of pointers behaves the same way. */
32 #pragma omp target private(i) map(from:err) firstprivate (s)
35 for (i = 0; i < 8; i++)
40 if (q != (int *) 0 || r != (int *) 0)
43 else if (p + 8 != q || r != s)
48 /* And zero-length array sections, though not known at compile
49 time, behave the same. */
50 #pragma omp target map(p[:n]) map(tofrom:q[:n]) map(alloc:r[:n]) private(i) map(from:err) firstprivate (s)
53 for (i = 0; i < 8; i++)
58 if (q != (int *) 0 || r != (int *) 0)
61 else if (p + 8 != q || r != s)
66 /* Non-zero length array sections, though not known at compile,
67 behave differently. */
68 #pragma omp target map(p[:m]) map(tofrom:q[:m]) map(to:r[:m]) private(i) map(from:err)
71 for (i = 0; i < 8; i++)
74 if (q[0] != 9 || r[0] != 10)
79 #pragma omp target data map(to:q[0:1])
81 /* For zero length array sections, p points to the start of
82 already mapped range, q points to the start of another one,
83 and r to the end of the second one. */
84 #pragma omp target map(to:p[:0]) map(from:q[:0]) map(tofrom:r[:0]) private(i) map(from:err)
87 for (i = 0; i < 8; i++)
102 /* Implicit mapping of pointers behaves the same way. */
103 #pragma omp target private(i) map(from:err)
106 for (i = 0; i < 8; i++)
121 /* And zero-length array sections, though not known at compile
122 time, behave the same. */
123 #pragma omp target map(p[:n]) map(alloc:q[:n]) map(from:r[:n]) private(i) map(from:err)
126 for (i = 0; i < 8; i++)
141 /* Non-zero length array sections, though not known at compile,
142 behave differently. */
143 #pragma omp target map(p[:m]) map(alloc:q[:m]) map(tofrom:r[:m]) private(i) map(from:err)
146 for (i = 0; i < 8; i++)
149 if (q[0] != 9 || r[0] != 10)
162 for (i = 0; i < 32; i++)
164 int *p = a + 1, *q = a + 9, *r = a + 10;