Hi! On Fri, 12 Dec 2014 21:04:21 +0100, I wrote: > On Wed, 10 Dec 2014 11:16:08 +0100, Jakub Jelinek wrote: > > On Wed, Dec 10, 2014 at 11:10:19AM +0100, Thomas Schwinge wrote: > > > --- /dev/null > > > +++ gcc/testsuite/c-c++-common/gomp/nesting-1.c > > > @@ -0,0 +1,77 @@ > > > +void > > > +f_omp_parallel (void) > > > +{ > > > +#pragma omp parallel > > > + { > > > + int i; > > > > Can you please use a global variable declared outside of > > f_omp_parallel instead? > > > > > + > > > +#pragma omp parallel > > > + ; > > > + > > > +#pragma omp target > > > + ; > > > + > > > +#pragma omp target data > > > + ; > > > + > > > +#pragma omp target update to(i) > > > > The thing is, if GCC tried harder, it could complain here, > > because i can't really be mapped at this point and thus it would be always > > undefined behavior. If the var is global, it is possible > > somebody uses > > #pragma omp target map(i) > > f_omp_parallel (); > > and then it would be valid. > > That makes sense, thanks. > > > Similarly in other tests. > > Will change on gomp-4_0-branch. Committed to gomp-4_0-branch in r218838: commit 01c48eb7ca8a04ca001a2caef57929c3ba40512f Author: tschwinge Date: Wed Dec 17 22:15:09 2014 +0000 OpenACC/OpenMP testing: Revise variable usage in constructs. gcc/testsuite/ * c-c++-common/goacc-gomp/nesting-fail-1.c: Revise variable usage in constructs. * c-c++-common/goacc/nesting-1.c: Likewise. * c-c++-common/goacc/nesting-fail-1.c: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gomp-4_0-branch@218838 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/ChangeLog.gomp | 7 +++++++ gcc/testsuite/c-c++-common/goacc-gomp/nesting-fail-1.c | 18 ++---------------- gcc/testsuite/c-c++-common/goacc/nesting-1.c | 8 ++------ gcc/testsuite/c-c++-common/goacc/nesting-fail-1.c | 6 ++---- 4 files changed, 13 insertions(+), 26 deletions(-) diff --git gcc/testsuite/ChangeLog.gomp gcc/testsuite/ChangeLog.gomp index 7a7b92d..e8dcb44 100644 --- gcc/testsuite/ChangeLog.gomp +++ gcc/testsuite/ChangeLog.gomp @@ -1,3 +1,10 @@ +2014-12-17 Thomas Schwinge + + * c-c++-common/goacc-gomp/nesting-fail-1.c: Revise variable usage + in constructs. + * c-c++-common/goacc/nesting-1.c: Likewise. + * c-c++-common/goacc/nesting-fail-1.c: Likewise. + 2014-11-13 Cesar Philippidis * gfortran.dg/gomp/omp_do1.f90: Update expected error. diff --git gcc/testsuite/c-c++-common/goacc-gomp/nesting-fail-1.c gcc/testsuite/c-c++-common/goacc-gomp/nesting-fail-1.c index d52c7c0..411fb5f 100644 --- gcc/testsuite/c-c++-common/goacc-gomp/nesting-fail-1.c +++ gcc/testsuite/c-c++-common/goacc-gomp/nesting-fail-1.c @@ -1,8 +1,8 @@ +extern int i; + void f_omp (void) { - int i; - #pragma omp parallel { #pragma acc parallel /* { dg-error "OpenACC construct inside of non-OpenACC region" } */ @@ -177,7 +177,6 @@ f_acc_parallel (void) #pragma acc parallel { - int i; #pragma omp for /* { dg-error "non-OpenACC construct inside of OpenACC region" } */ for (i = 0; i < 3; i++) ; @@ -217,7 +216,6 @@ f_acc_parallel (void) #pragma acc parallel { - int i; #pragma omp atomic write i = 0; /* { dg-error "non-OpenACC construct inside of OpenACC region" } */ } @@ -230,8 +228,6 @@ f_acc_parallel (void) #pragma acc parallel { - int i; - #pragma omp target /* { dg-error "non-OpenACC construct inside of OpenACC region" } */ ; #pragma omp target data /* { dg-error "non-OpenACC construct inside of OpenACC region" } */ @@ -251,7 +247,6 @@ f_acc_kernels (void) #pragma acc kernels { - int i; #pragma omp for /* { dg-error "non-OpenACC construct inside of OpenACC region" } */ for (i = 0; i < 3; i++) ; @@ -291,7 +286,6 @@ f_acc_kernels (void) #pragma acc kernels { - int i; #pragma omp atomic write i = 0; /* { dg-error "non-OpenACC construct inside of OpenACC region" } */ } @@ -304,8 +298,6 @@ f_acc_kernels (void) #pragma acc kernels { - int i; - #pragma omp target /* { dg-error "non-OpenACC construct inside of OpenACC region" } */ ; #pragma omp target data /* { dg-error "non-OpenACC construct inside of OpenACC region" } */ @@ -325,7 +317,6 @@ f_acc_data (void) #pragma acc data { - int i; #pragma omp for /* { dg-error "non-OpenACC construct inside of OpenACC region" } */ for (i = 0; i < 3; i++) ; @@ -365,7 +356,6 @@ f_acc_data (void) #pragma acc data { - int i; #pragma omp atomic write i = 0; /* { dg-error "non-OpenACC construct inside of OpenACC region" } */ } @@ -378,8 +368,6 @@ f_acc_data (void) #pragma acc data { - int i; - #pragma omp target /* { dg-error "non-OpenACC construct inside of OpenACC region" } */ ; #pragma omp target data /* { dg-error "non-OpenACC construct inside of OpenACC region" } */ @@ -391,8 +379,6 @@ f_acc_data (void) void f_acc_loop (void) { - int i; - #pragma acc loop for (i = 0; i < 2; ++i) { diff --git gcc/testsuite/c-c++-common/goacc/nesting-1.c gcc/testsuite/c-c++-common/goacc/nesting-1.c index 4fbf018..b4b863f 100644 --- gcc/testsuite/c-c++-common/goacc/nesting-1.c +++ gcc/testsuite/c-c++-common/goacc/nesting-1.c @@ -1,10 +1,10 @@ +extern int i; + void f_acc_parallel (void) { #pragma acc parallel { - int i; - #pragma acc loop for (i = 0; i < 2; ++i) ; @@ -17,8 +17,6 @@ f_acc_kernels (void) { #pragma acc kernels { - int i; - #pragma acc loop for (i = 0; i < 2; ++i) ; @@ -31,8 +29,6 @@ f_acc_data (void) { #pragma acc data { - int i; - #pragma acc parallel ; diff --git gcc/testsuite/c-c++-common/goacc/nesting-fail-1.c gcc/testsuite/c-c++-common/goacc/nesting-fail-1.c index a833806..b13d2de 100644 --- gcc/testsuite/c-c++-common/goacc/nesting-fail-1.c +++ gcc/testsuite/c-c++-common/goacc/nesting-fail-1.c @@ -1,3 +1,5 @@ +extern int i; + /* TODO: While the OpenACC specification does allow for certain kinds of nesting, we don't support many of these yet. */ void @@ -5,8 +7,6 @@ f_acc_parallel (void) { #pragma acc parallel { - int i; - #pragma acc parallel /* { dg-bogus "parallel construct inside of parallel region" "not implemented" { xfail *-*-* } } */ ; #pragma acc kernels /* { dg-bogus "kernels construct inside of parallel region" "not implemented" { xfail *-*-* } } */ @@ -26,8 +26,6 @@ f_acc_kernels (void) { #pragma acc kernels { - int i; - #pragma acc parallel /* { dg-bogus "parallel construct inside of kernels region" "not implemented" { xfail *-*-* } } */ ; #pragma acc kernels /* { dg-bogus "kernels construct inside of kernels region" "not implemented" { xfail *-*-* } } */ Grüße, Thomas