[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
This commit is contained in:
parent
5c9c7e19e6
commit
6f7c1f6502
4 changed files with 71 additions and 3 deletions
|
@ -1,5 +1,8 @@
|
|||
2019-06-18 Thomas Schwinge <thomas@codesourcery.com>
|
||||
|
||||
PR testsuite/90861
|
||||
* c-c++-common/goacc/declare-pr90861.c: New file.
|
||||
|
||||
PR testsuite/90868
|
||||
* c-c++-common/goacc/declare-1.c: Update.
|
||||
* c-c++-common/goacc/declare-2.c: Likewise.
|
||||
|
|
21
gcc/testsuite/c-c++-common/goacc/declare-pr90861.c
Normal file
21
gcc/testsuite/c-c++-common/goacc/declare-pr90861.c
Normal file
|
@ -0,0 +1,21 @@
|
|||
/* 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 */
|
||||
}
|
|
@ -1,5 +1,8 @@
|
|||
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
|
||||
* testsuite/libgomp.oacc-c-c++-common/declare-1.c: Update.
|
||||
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
/* Verify that acc declare accept VLA variables. */
|
||||
/* Verify OpenACC 'declare' with VLAs. */
|
||||
|
||||
#include <assert.h>
|
||||
|
||||
int
|
||||
main ()
|
||||
|
||||
void
|
||||
f (void)
|
||||
{
|
||||
int N = 1000;
|
||||
int i, A[N];
|
||||
|
@ -20,6 +21,46 @@ main ()
|
|||
|
||||
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. */
|
||||
|
|
Loading…
Add table
Reference in a new issue