* c-c++-common/Wrestrict.c (test_strcpy_range): Revert latest change.
[official-gcc.git] / libgomp / testsuite / libgomp.oacc-c-c++-common / declare-1.c
blobbc726174252d4c0cedd0ecfbdbd759ab52d2d811
1 #include <openacc.h>
2 #include <stdlib.h>
3 #include <stdio.h>
5 #define N 8
7 void
8 subr2 (int *a)
10 int i;
11 int f[N];
12 #pragma acc declare copyout (f)
14 #pragma acc parallel copy (a[0:N])
16 for (i = 0; i < N; i++)
18 f[i] = a[i];
19 a[i] = f[i] + f[i] + f[i];
24 void
25 subr1 (int *a)
27 int f[N];
28 #pragma acc declare copy (f)
30 #pragma acc parallel copy (a[0:N])
32 int i;
34 for (i = 0; i < N; i++)
36 f[i] = a[i];
37 a[i] = f[i] + f[i];
42 int b[8];
43 #pragma acc declare create (b)
45 int d[8] = { 1, 2, 3, 4, 5, 6, 7, 8 };
46 #pragma acc declare copyin (d)
48 int
49 main (int argc, char **argv)
51 int a[N];
52 int e[N];
53 #pragma acc declare create (e)
54 int i;
56 for (i = 0; i < N; i++)
57 a[i] = i + 1;
59 if (!acc_is_present (&b, sizeof (b)))
60 abort ();
62 if (!acc_is_present (&d, sizeof (d)))
63 abort ();
65 if (!acc_is_present (&e, sizeof (e)))
66 abort ();
68 #pragma acc parallel copyin (a[0:N])
70 for (i = 0; i < N; i++)
72 b[i] = a[i];
73 a[i] = b[i];
77 for (i = 0; i < N; i++)
79 if (a[i] != i + 1)
80 abort ();
83 #pragma acc parallel copy (a[0:N])
85 for (i = 0; i < N; i++)
87 e[i] = a[i] + d[i];
88 a[i] = e[i];
92 for (i = 0; i < N; i++)
94 if (a[i] != (i + 1) * 2)
95 abort ();
98 for (i = 0; i < N; i++)
100 a[i] = 1234;
103 subr1 (&a[0]);
105 for (i = 0; i < N; i++)
107 if (a[i] != 1234 * 2)
108 abort ();
111 subr2 (&a[0]);
113 for (i = 0; i < 1; i++)
115 if (a[i] != 1234 * 6)
116 abort ();
119 return 0;