diff mbox

OpenACC/OpenMP testing: Revise variable usage in constructs (was: Nested OpenACC/OpenMP constructs)

Message ID 87r3vxudh6.fsf@schwinge.name
State New
Headers show

Commit Message

Thomas Schwinge Dec. 17, 2014, 10:18 p.m. UTC
Hi!

On Fri, 12 Dec 2014 21:04:21 +0100, I wrote:
> On Wed, 10 Dec 2014 11:16:08 +0100, Jakub Jelinek <jakub@redhat.com> 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(-)



Grüße,
 Thomas
diff mbox

Patch

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  <thomas@codesourcery.com>
+
+	* 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  <cesar@codesourcery.com>
 
 	* 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 *-*-* } } */