From 6f7c1f65027e3372ce540398e55781f84bf575d3 Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Wed, 19 Jun 2019 00:14:14 +0200 Subject: [PATCH] [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 --- gcc/testsuite/ChangeLog | 3 ++ .../c-c++-common/goacc/declare-pr90861.c | 21 +++++++++ libgomp/ChangeLog | 3 ++ .../libgomp.oacc-c-c++-common/declare-vla.c | 47 +++++++++++++++++-- 4 files changed, 71 insertions(+), 3 deletions(-) create mode 100644 gcc/testsuite/c-c++-common/goacc/declare-pr90861.c diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 981055838ab..699a94b3ed4 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,8 @@ 2019-06-18 Thomas Schwinge + 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. diff --git a/gcc/testsuite/c-c++-common/goacc/declare-pr90861.c b/gcc/testsuite/c-c++-common/goacc/declare-pr90861.c new file mode 100644 index 00000000000..7c905624f7a --- /dev/null +++ b/gcc/testsuite/c-c++-common/goacc/declare-pr90861.c @@ -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 */ +} diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog index 06004aafde9..1a0d363e4ba 100644 --- a/libgomp/ChangeLog +++ b/libgomp/ChangeLog @@ -1,5 +1,8 @@ 2019-06-18 Thomas Schwinge + 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. diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/declare-vla.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/declare-vla.c index 3ea148ed40d..0f51badca42 100644 --- a/libgomp/testsuite/libgomp.oacc-c-c++-common/declare-vla.c +++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/declare-vla.c @@ -1,9 +1,10 @@ -/* Verify that acc declare accept VLA variables. */ +/* Verify OpenACC 'declare' with VLAs. */ #include -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. */ -- 2.30.2