Commit 6f7c1f65 by Thomas Schwinge Committed by Thomas Schwinge

[PR90861] Document status quo for OpenACC 'declare' not cleaning up for VLAs

	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
parent 5c9c7e19
2019-06-18 Thomas Schwinge <thomas@codesourcery.com> 2019-06-18 Thomas Schwinge <thomas@codesourcery.com>
PR testsuite/90861
* c-c++-common/goacc/declare-pr90861.c: New file.
PR testsuite/90868 PR testsuite/90868
* c-c++-common/goacc/declare-1.c: Update. * c-c++-common/goacc/declare-1.c: Update.
* c-c++-common/goacc/declare-2.c: Likewise. * c-c++-common/goacc/declare-2.c: Likewise.
......
/* Verify that OpenACC 'declare' cleans up for VLAs. */
/* { dg-additional-options "-fdump-tree-gimple" } */
void f1 (void)
{
#define N_f1 1000
int A_f1[N_f1];
#pragma acc declare copy(A_f1)
/* { dg-final { scan-tree-dump-times {#pragma omp target oacc_declare map\(to:A_f1} 1 gimple } }
{ dg-final { scan-tree-dump-times {#pragma omp target oacc_declare map\(from:A_f1} 1 gimple } } */
}
void f2 (void)
{
int N_f2 = 1000;
int A_f2[N_f2];
#pragma acc declare copy(A_f2)
/* { dg-final { scan-tree-dump-times {#pragma omp target oacc_declare map\(to:\(\*A_f2} 1 gimple } }
{ dg-final { scan-tree-dump-times {#pragma omp target oacc_declare map\(from:\(\*A_f2} 1 gimple { xfail *-*-* } } } TODO PR90861 */
}
2019-06-18 Thomas Schwinge <thomas@codesourcery.com> 2019-06-18 Thomas Schwinge <thomas@codesourcery.com>
PR testsuite/90861
* testsuite/libgomp.oacc-c-c++-common/declare-vla.c: Update.
PR middle-end/90862 PR middle-end/90862
* testsuite/libgomp.oacc-c-c++-common/declare-1.c: Update. * testsuite/libgomp.oacc-c-c++-common/declare-1.c: Update.
......
/* Verify that acc declare accept VLA variables. */ /* Verify OpenACC 'declare' with VLAs. */
#include <assert.h> #include <assert.h>
int
main () void
f (void)
{ {
int N = 1000; int N = 1000;
int i, A[N]; int i, A[N];
...@@ -20,6 +21,46 @@ main () ...@@ -20,6 +21,46 @@ main ()
for (i = 0; i < N; i++) for (i = 0; i < N; i++)
assert (A[i] == 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; 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. */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment