Update 'Q' constraint documentation.
[official-gcc.git] / libgomp / testsuite / libgomp.oacc-c-c++-common / declare-vla.c
blob0f51badca42e5f7723f481c234905e4504257f2a
1 /* Verify OpenACC 'declare' with VLAs. */
3 #include <assert.h>
6 void
7 f (void)
9 int N = 1000;
10 int i, A[N];
11 #pragma acc declare copy(A)
13 for (i = 0; i < N; i++)
14 A[i] = -i;
16 #pragma acc kernels
17 for (i = 0; i < N; i++)
18 A[i] = i;
20 #pragma acc update host(A)
22 for (i = 0; i < N; i++)
23 assert (A[i] == i);
27 /* The same as 'f' but everything contained in an OpenACC 'data' construct. */
29 void
30 f_data (void)
32 #pragma acc data
34 int N = 1000;
35 int i, A[N];
36 # pragma acc declare copy(A)
38 for (i = 0; i < N; i++)
39 A[i] = -i;
41 # pragma acc kernels
42 for (i = 0; i < N; i++)
43 A[i] = i;
45 # pragma acc update host(A)
47 for (i = 0; i < N; i++)
48 assert (A[i] == i);
53 int
54 main ()
56 f ();
58 f_data ();
60 return 0;
64 /* { dg-xfail-run-if "TODO PR90861" { *-*-* } { "-DACC_MEM_SHARED=0" } }
65 This might XPASS if the compiler happens to put the two 'A' VLAs at the same
66 address. */