Daily bump.
[official-gcc.git] / libgomp / testsuite / libgomp.c / target-21.c
blob41498cf21483e5ea08c7f24c36ccec60fe5c26d6
1 extern void abort (void);
2 union U { int x; long long y; };
3 struct T { int a; union U b; int c; };
4 struct S { int s; int u; struct T v; int x[10]; union U w; int y[10]; int z[10]; };
5 volatile int z;
7 int
8 main ()
10 struct S s;
11 s.s = 0;
12 s.u = 1;
13 s.v.a = 2;
14 s.v.b.y = 3LL;
15 s.v.c = 19;
16 s.w.x = 4;
17 s.x[0] = 7;
18 s.x[1] = 8;
19 s.y[3] = 9;
20 s.y[4] = 10;
21 s.y[5] = 11;
22 int err = 0;
23 #pragma omp target map (to:s.v.b, s.u, s.x[0:z + 2]) \
24 map (tofrom:s.y[3:3]) \
25 map (from: s.w, s.z[z + 1:z + 3], err)
27 err = 0;
28 if (s.u != 1 || s.v.b.y != 3LL || s.x[0] != 7 || s.x[1] != 8
29 || s.y[3] != 9 || s.y[4] != 10 || s.y[5] != 11)
30 err = 1;
31 s.w.x = 6;
32 s.y[3] = 12;
33 s.y[4] = 13;
34 s.y[5] = 14;
35 s.z[1] = 15;
36 s.z[2] = 16;
37 s.z[3] = 17;
39 if (err || s.w.x != 6 || s.y[3] != 12 || s.y[4] != 13 || s.y[5] != 14
40 || s.z[1] != 15 || s.z[2] != 16 || s.z[3] != 17)
41 abort ();
42 s.u++;
43 s.v.a++;
44 s.v.b.y++;
45 s.w.x++;
46 s.x[1] = 18;
47 s.z[0] = 19;
48 #pragma omp target data map (tofrom: s)
49 #pragma omp target map (always to: s.w, s.x[1], err) map (alloc:s.u, s.v.b, s.z[z:z + 1])
51 err = 0;
52 if (s.u != 2 || s.v.b.y != 4LL || s.w.x != 7 || s.x[1] != 18 || s.z[0] != 19)
53 err = 1;
54 s.w.x = 8;
55 s.x[1] = 20;
56 s.z[0] = 21;
58 if (err || s.w.x != 8 || s.x[1] != 20 || s.z[0] != 21)
59 abort ();
60 s.u++;
61 s.v.a++;
62 s.v.b.y++;
63 s.w.x++;
64 s.x[0] = 22;
65 s.x[1] = 23;
66 #pragma omp target data map (from: s.w, s.x[0:2]) map (to: s.v.b, s.u)
67 #pragma omp target map (always to: s.w, s.x[0:2], err) map (alloc:s.u, s.v.b)
69 err = 0;
70 if (s.u != 3 || s.v.b.y != 5LL || s.w.x != 9 || s.x[0] != 22 || s.x[1] != 23)
71 err = 1;
72 s.w.x = 11;
73 s.x[0] = 24;
74 s.x[1] = 25;
76 if (err || s.w.x != 11 || s.x[0] != 24 || s.x[1] != 25)
77 abort ();
78 return 0;