Hi! On Fri, 12 Dec 2014 21:04:21 +0100, I wrote: > On Wed, 10 Dec 2014 11:16:08 +0100, Jakub Jelinek <[email protected]> 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 <tschwinge@138bc75d-0d04-0410-961f-82ee72b054a4>
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 <[email protected]>
+
+ * 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 <[email protected]>
* 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
pgpKb30lhw0qO.pgp
Description: PGP signature
