6f7c1f6502
gcc/testsuite/ PR testsuite/90861 * c-c++-common/goacc/declare-pr90861.c: New file. libgomp/ PR testsuite/90861 * testsuite/libgomp.oacc-c-c++-common/declare-vla.c: Update. From-SVN: r272446
67 lines
940 B
C
67 lines
940 B
C
/* Verify OpenACC 'declare' with VLAs. */
|
|
|
|
#include <assert.h>
|
|
|
|
|
|
void
|
|
f (void)
|
|
{
|
|
int N = 1000;
|
|
int i, A[N];
|
|
#pragma acc declare copy(A)
|
|
|
|
for (i = 0; i < N; i++)
|
|
A[i] = -i;
|
|
|
|
#pragma acc kernels
|
|
for (i = 0; i < N; i++)
|
|
A[i] = i;
|
|
|
|
#pragma acc update host(A)
|
|
|
|
for (i = 0; i < N; i++)
|
|
assert (A[i] == i);
|
|
}
|
|
|
|
|
|
/* The same as 'f' but everything contained in an OpenACC 'data' construct. */
|
|
|
|
void
|
|
f_data (void)
|
|
{
|
|
#pragma acc data
|
|
{
|
|
int N = 1000;
|
|
int i, A[N];
|
|
# pragma acc declare copy(A)
|
|
|
|
for (i = 0; i < N; i++)
|
|
A[i] = -i;
|
|
|
|
# pragma acc kernels
|
|
for (i = 0; i < N; i++)
|
|
A[i] = i;
|
|
|
|
# pragma acc update host(A)
|
|
|
|
for (i = 0; i < N; i++)
|
|
assert (A[i] == i);
|
|
}
|
|
}
|
|
|
|
|
|
int
|
|
main ()
|
|
{
|
|
f ();
|
|
|
|
f_data ();
|
|
|
|
return 0;
|
|
}
|
|
|
|
|
|
/* { dg-xfail-run-if "TODO PR90861" { *-*-* } { "-DACC_MEM_SHARED=0" } }
|
|
This might XPASS if the compiler happens to put the two 'A' VLAs at the same
|
|
address. */
|