Some OpenACC host_data cleanup
authorThomas Schwinge <thomas@codesourcery.com>
Wed, 2 Dec 2015 15:53:34 +0000 (16:53 +0100)
committerThomas Schwinge <tschwinge@gcc.gnu.org>
Wed, 2 Dec 2015 15:53:34 +0000 (16:53 +0100)
gcc/c/
* c-parser.c (c_parser_omp_clause_name)
(c_parser_oacc_all_clauses): Alphabetical sorting.
gcc/cp/
* parser.c (cp_parser_omp_clause_name)
(cp_parser_oacc_all_clauses): Alphabetical sorting.
* pt.c (tsubst_omp_clauses): Handle OMP_CLAUSE_USE_DEVICE.
gcc/testsuite/
* c-c++-common/goacc/host_data-5.c: New file.
* c-c++-common/goacc/host_data-6.c: Likewise.
* gfortran.dg/goacc/coarray.f95: XFAIL.
* gfortran.dg/goacc/coarray_2.f90: Adjust dg-excess-errors
directive.
* gfortran.dg/goacc/host_data-tree.f95: Remove dg-prune-output
directive.
libgomp/
* testsuite/libgomp.oacc-c-c++-common/host_data-2.c: Restrict to
target openacc_nvidia_accel_selected.
* testsuite/libgomp.oacc-c-c++-common/host_data-4.c: Likewise.
* testsuite/libgomp.oacc-c-c++-common/host_data-5.c: Likewise.
* testsuite/libgomp.oacc-c-c++-common/host_data-3.c: Remove file.
* testsuite/libgomp.oacc-c-c++-common/host_data-6.c: Remove file.

Co-Authored-By: James Norris <James_Norris@mentor.com>
Co-Authored-By: Julian Brown <julian@codesourcery.com>
From-SVN: r231184

17 files changed:
gcc/c/ChangeLog
gcc/c/c-parser.c
gcc/cp/ChangeLog
gcc/cp/parser.c
gcc/cp/pt.c
gcc/testsuite/ChangeLog
gcc/testsuite/c-c++-common/goacc/host_data-5.c [new file with mode: 0644]
gcc/testsuite/c-c++-common/goacc/host_data-6.c [new file with mode: 0644]
gcc/testsuite/gfortran.dg/goacc/coarray.f95
gcc/testsuite/gfortran.dg/goacc/coarray_2.f90
gcc/testsuite/gfortran.dg/goacc/host_data-tree.f95
libgomp/ChangeLog
libgomp/testsuite/libgomp.oacc-c-c++-common/host_data-2.c
libgomp/testsuite/libgomp.oacc-c-c++-common/host_data-3.c [deleted file]
libgomp/testsuite/libgomp.oacc-c-c++-common/host_data-4.c
libgomp/testsuite/libgomp.oacc-c-c++-common/host_data-5.c
libgomp/testsuite/libgomp.oacc-c-c++-common/host_data-6.c [deleted file]

index acb8ee4e6cc53b92903aca8c29b4d3a914c640dc..e517467bd6a433d5c4497ff8cc35e2d27eb02895 100644 (file)
@@ -1,3 +1,8 @@
+2015-12-02  Thomas Schwinge  <thomas@codesourcery.com>
+
+       * c-parser.c (c_parser_omp_clause_name)
+       (c_parser_oacc_all_clauses): Alphabetical sorting.
+
 2015-12-02  Jakub Jelinek  <jakub@redhat.com>
 
        PR c/68533
index d4c512fee047c013a4ede26a4f94b1b64dd163ab..ee0a30517af29ca2140c5c07feec412fb9006314 100644 (file)
@@ -10277,10 +10277,10 @@ c_parser_omp_clause_name (c_parser *parser)
            result = PRAGMA_OMP_CLAUSE_UNIFORM;
          else if (!strcmp ("untied", p))
            result = PRAGMA_OMP_CLAUSE_UNTIED;
-         else if (!strcmp ("use_device_ptr", p))
-           result = PRAGMA_OMP_CLAUSE_USE_DEVICE_PTR;
          else if (!strcmp ("use_device", p))
            result = PRAGMA_OACC_CLAUSE_USE_DEVICE;
+         else if (!strcmp ("use_device_ptr", p))
+           result = PRAGMA_OMP_CLAUSE_USE_DEVICE_PTR;
          break;
        case 'v':
          if (!strcmp ("vector", p))
@@ -12951,10 +12951,6 @@ c_parser_oacc_all_clauses (c_parser *parser, omp_clause_mask mask,
          clauses = c_parser_oacc_data_clause (parser, c_kind, clauses);
          c_name = "self";
          break;
-       case PRAGMA_OACC_CLAUSE_USE_DEVICE:
-         clauses = c_parser_oacc_clause_use_device (parser, clauses);
-         c_name = "use_device";
-         break;
        case PRAGMA_OACC_CLAUSE_SEQ:
          clauses = c_parser_oacc_simple_clause (parser, OMP_CLAUSE_SEQ,
                                                clauses);
@@ -12964,6 +12960,10 @@ c_parser_oacc_all_clauses (c_parser *parser, omp_clause_mask mask,
          clauses = c_parser_oacc_clause_tile (parser, clauses);
          c_name = "tile";
          break;
+       case PRAGMA_OACC_CLAUSE_USE_DEVICE:
+         clauses = c_parser_oacc_clause_use_device (parser, clauses);
+         c_name = "use_device";
+         break;
        case PRAGMA_OACC_CLAUSE_VECTOR:
          c_name = "vector";
          clauses = c_parser_oacc_shape_clause (parser, OMP_CLAUSE_VECTOR,
index 385ba635c4b5962a089c124b2d197daf47ed7e55..d2a7e99c63fbdf35c39c9002f92c4a8557e89f51 100644 (file)
@@ -1,3 +1,9 @@
+2015-12-02  Thomas Schwinge  <thomas@codesourcery.com>
+
+       * parser.c (cp_parser_omp_clause_name)
+       (cp_parser_oacc_all_clauses): Alphabetical sorting.
+       * pt.c (tsubst_omp_clauses): Handle OMP_CLAUSE_USE_DEVICE.
+
 2015-12-02  Andreas Arnez  <arnez@linux.vnet.ibm.com>
 
        PR gcov-profile/68603
index f78df028193b427699b0b0c0cea97cd9913f3af7..b4ecac7acbd4106871d1ba70ab53b81c9eec4e79 100644 (file)
@@ -29230,10 +29230,10 @@ cp_parser_omp_clause_name (cp_parser *parser)
            result = PRAGMA_OMP_CLAUSE_UNIFORM;
          else if (!strcmp ("untied", p))
            result = PRAGMA_OMP_CLAUSE_UNTIED;
-         else if (!strcmp ("use_device_ptr", p))
-           result = PRAGMA_OMP_CLAUSE_USE_DEVICE_PTR;
          else if (!strcmp ("use_device", p))
            result = PRAGMA_OACC_CLAUSE_USE_DEVICE;
+         else if (!strcmp ("use_device_ptr", p))
+           result = PRAGMA_OMP_CLAUSE_USE_DEVICE_PTR;
          break;
        case 'v':
          if (!strcmp ("vector", p))
@@ -31600,11 +31600,6 @@ cp_parser_oacc_all_clauses (cp_parser *parser, omp_clause_mask mask,
          clauses = cp_parser_oacc_data_clause (parser, c_kind, clauses);
          c_name = "self";
          break;
-       case PRAGMA_OACC_CLAUSE_USE_DEVICE:
-         clauses = cp_parser_omp_var_list (parser, OMP_CLAUSE_USE_DEVICE,
-                                           clauses);
-         c_name = "use_device";
-         break;
        case PRAGMA_OACC_CLAUSE_SEQ:
          clauses = cp_parser_oacc_simple_clause (parser, OMP_CLAUSE_SEQ,
                                                 clauses, here);
@@ -31614,6 +31609,11 @@ cp_parser_oacc_all_clauses (cp_parser *parser, omp_clause_mask mask,
          clauses = cp_parser_oacc_clause_tile (parser, here, clauses);
          c_name = "tile";
          break;
+       case PRAGMA_OACC_CLAUSE_USE_DEVICE:
+         clauses = cp_parser_omp_var_list (parser, OMP_CLAUSE_USE_DEVICE,
+                                           clauses);
+         c_name = "use_device";
+         break;
        case PRAGMA_OACC_CLAUSE_VECTOR:
          c_name = "vector";
          clauses = cp_parser_oacc_shape_clause (parser, OMP_CLAUSE_VECTOR,
@@ -34516,13 +34516,13 @@ cp_parser_oacc_data (cp_parser *parser, cp_token *pragma_tok)
   return stmt;
 }
 
-#define OACC_HOST_DATA_CLAUSE_MASK                                     \
-  ( (OMP_CLAUSE_MASK_1 << PRAGMA_OACC_CLAUSE_USE_DEVICE) )
-
 /* OpenACC 2.0:
   # pragma acc host_data <clauses> new-line
   structured-block  */
 
+#define OACC_HOST_DATA_CLAUSE_MASK                                     \
+  ( (OMP_CLAUSE_MASK_1 << PRAGMA_OACC_CLAUSE_USE_DEVICE) )
+
 static tree
 cp_parser_oacc_host_data (cp_parser *parser, cp_token *pragma_tok)
 {
index 5befd644c098082468f7d135b572ea029d829c4c..d1d1e4e9a6c3847b0cc5cfc444cd308189df5a87 100644 (file)
@@ -14387,6 +14387,7 @@ tsubst_omp_clauses (tree clauses, bool declare_simd, bool allow_fields,
        case OMP_CLAUSE_FROM:
        case OMP_CLAUSE_TO:
        case OMP_CLAUSE_MAP:
+       case OMP_CLAUSE_USE_DEVICE:
        case OMP_CLAUSE_USE_DEVICE_PTR:
        case OMP_CLAUSE_IS_DEVICE_PTR:
          OMP_CLAUSE_DECL (nc)
@@ -14513,6 +14514,7 @@ tsubst_omp_clauses (tree clauses, bool declare_simd, bool allow_fields,
          case OMP_CLAUSE_COPYPRIVATE:
          case OMP_CLAUSE_LINEAR:
          case OMP_CLAUSE_REDUCTION:
+         case OMP_CLAUSE_USE_DEVICE:
          case OMP_CLAUSE_USE_DEVICE_PTR:
          case OMP_CLAUSE_IS_DEVICE_PTR:
            /* tsubst_expr on SCOPE_REF results in returning
index 5fe26bb9aa00dd9fe9e7c0ddfe9a465e35e5c045..4f7af876162e1573af4a7fa8d5d11388c2331b1d 100644 (file)
@@ -1,3 +1,18 @@
+2015-12-02  Thomas Schwinge  <thomas@codesourcery.com>
+
+       * gfortran.dg/goacc/coarray.f95: XFAIL.
+       * gfortran.dg/goacc/coarray_2.f90: Adjust dg-excess-errors
+       directive.
+       * gfortran.dg/goacc/host_data-tree.f95: Remove dg-prune-output
+       directive.
+
+2015-12-02  Thomas Schwinge  <thomas@codesourcery.com>
+           Julian Brown  <julian@codesourcery.com>
+           James Norris  <James_Norris@mentor.com>
+
+       * c-c++-common/goacc/host_data-5.c: New file.
+       * c-c++-common/goacc/host_data-6.c: Likewise.
+
 2015-12-02  Tom de Vries  <tom@codesourcery.com>
 
        * c-c++-common/goacc/kernels-default-2.c: New test.
diff --git a/gcc/testsuite/c-c++-common/goacc/host_data-5.c b/gcc/testsuite/c-c++-common/goacc/host_data-5.c
new file mode 100644 (file)
index 0000000..f372fbd
--- /dev/null
@@ -0,0 +1,23 @@
+/* { dg-do compile } */
+
+#define N 1024
+
+int main (int argc, char* argv[])
+{
+  int x[N];
+
+#pragma acc data copyin (x[0:N])
+  {
+    int *xp;
+#pragma acc host_data use_device (x)
+    {
+      /* This use of the present clause is undefined behaviour for OpenACC.  */
+#pragma acc parallel present (x) copyout (xp) /* { dg-error "variable 'x' declared in enclosing 'host_data' region" } */
+      {
+        xp = x;
+      }
+    }
+  }
+
+  return 0;
+}
diff --git a/gcc/testsuite/c-c++-common/goacc/host_data-6.c b/gcc/testsuite/c-c++-common/goacc/host_data-6.c
new file mode 100644 (file)
index 0000000..8be7912
--- /dev/null
@@ -0,0 +1,25 @@
+/* { dg-do compile } */
+
+#define N 1024
+
+int main (int argc, char* argv[])
+{
+  int x[N];
+
+#pragma acc data copyin (x[0:N])
+  {
+    int *xp;
+#pragma acc host_data use_device (x)
+    {
+      /* Here 'x' being implicitly firstprivate for the parallel region
+        conflicts with it being declared as use_device in the enclosing
+        host_data region.  */
+#pragma acc parallel copyout (xp)
+      {
+        xp = x; /* { dg-error "variable 'x' declared in enclosing 'host_data' region" } */
+      }
+    }
+  }
+
+  return 0;
+}
index 130ffc3ce9dbcffb81ccc05adc79961a37a86362..d2f10d54db573e42d51c2e220d0517627285af33 100644 (file)
@@ -1,7 +1,9 @@
 ! { dg-do compile } 
 ! { dg-additional-options "-fcoarray=single" }
-
-! TODO: These cases must fail
+!
+! PR fortran/63861
+! { dg-xfail-if "<http://gcc.gnu.org/PR63861>" { *-*-* } }
+! { dg-excess-errors "TODO" }
 
 module test
 contains
@@ -9,7 +11,6 @@ contains
     implicit none
     integer :: i
     integer, codimension[*] :: a
-    ! { dg-excess-errors "sorry, unimplemented: directive not yet implemented" }
     !$acc declare device_resident (a)
     !$acc data copy (a)
     !$acc end data
@@ -17,7 +18,6 @@ contains
     !$acc end data
     !$acc parallel private (a)
     !$acc end parallel
-    ! { dg-excess-errors "sorry, unimplemented: directive not yet implemented" }
     !$acc host_data use_device (a)
     !$acc end host_data
     !$acc parallel loop reduction(+:a)
index f9cf9ac6ca033fa2a18b7575e651e1a50fb27041..87e04d58beea4c6b0b3b3854cc4daa069e2deefe 100644 (file)
@@ -3,6 +3,7 @@
 !
 ! PR fortran/63861
 ! { dg-xfail-if "<http://gcc.gnu.org/PR63861>" { *-*-* } }
+! { dg-excess-errors "TODO" }
 
 module test
 contains
@@ -106,4 +107,3 @@ contains
     !$acc update self (a)
   end subroutine oacc4
 end module test
-! { dg-excess-errors "sorry, unimplemented: directive not yet implemented" }
index e4c8205a59119a7cc4156b1f2da2bf898e131632..7a5eea6d287842b10b2c7edbf11bfe8e9f63f449 100644 (file)
@@ -8,5 +8,4 @@ program test
   !$acc host_data use_device(i)
   !$acc end host_data
 end program test
-! { dg-prune-output "unimplemented" }
 ! { dg-final { scan-tree-dump-times "pragma acc host_data use_device\\(i\\)" 1 "original" } } 
index ddf836a078bb0b685366e93688237a3fd3b7b1fd..cde0b5c55a3a2b260ba05d8373dc12d26294f201 100644 (file)
@@ -1,3 +1,12 @@
+2015-12-02  Thomas Schwinge  <thomas@codesourcery.com>
+
+       * testsuite/libgomp.oacc-c-c++-common/host_data-2.c: Restrict to
+       target openacc_nvidia_accel_selected.
+       * testsuite/libgomp.oacc-c-c++-common/host_data-4.c: Likewise.
+       * testsuite/libgomp.oacc-c-c++-common/host_data-5.c: Likewise.
+       * testsuite/libgomp.oacc-c-c++-common/host_data-3.c: Remove file.
+       * testsuite/libgomp.oacc-c-c++-common/host_data-6.c: Remove file.
+
 2015-12-01  Julian Brown  <julian@codesourcery.com>
            James Norris  <James_Norris@mentor.com>
 
index 98202867b4d8daa13fb8e5762fbe0b5366172a06..614f14324d4ef24b9349b192658bc4b6ee61585f 100644 (file)
@@ -1,4 +1,4 @@
-/* { dg-do run } */
+/* { dg-do run { target openacc_nvidia_accel_selected } } */
 
 #include <stdlib.h>
 #include <openacc.h>
diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/host_data-3.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/host_data-3.c
deleted file mode 100644 (file)
index 7d9b5f7..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-/* { dg-do compile } */
-
-#include <openacc.h>
-#include <stdlib.h>
-
-#define N 1024
-
-int main (int argc, char* argv[])
-{
-  int x[N];
-
-#pragma acc data copyin (x[0:N])
-  {
-    int *xp;
-#pragma acc host_data use_device (x)
-    {
-      /* This use of the present clause is undefined behaviour for OpenACC.  */
-#pragma acc parallel present (x) copyout (xp) /* { dg-error "variable 'x' declared in enclosing 'host_data' region" } */
-      {
-        xp = x;
-      }
-    }
-
-    if (xp != acc_deviceptr (x))
-      abort ();
-  }
-
-  return 0;
-}
index 3504f2710fd30857083d1cc05564693de6eb0f6b..0ab5a3569127cfef2c51a333dfa3107912ae0e42 100644 (file)
@@ -1,4 +1,4 @@
-/* { dg-do run } */
+/* { dg-do run { target openacc_nvidia_accel_selected } } */
 
 #include <openacc.h>
 #include <stdlib.h>
index 268e9194d35d4fbde7eea266b9298d97256b851f..a3737a7dae0d56853e75bcf1ee1928f2f7a2550e 100644 (file)
@@ -1,4 +1,4 @@
-/* { dg-do run } */
+/* { dg-do run { target openacc_nvidia_accel_selected } } */
 
 #include <openacc.h>
 #include <stdlib.h>
diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/host_data-6.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/host_data-6.c
deleted file mode 100644 (file)
index a841488..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-/* { dg-do compile } */
-
-#include <openacc.h>
-#include <stdlib.h>
-
-#define N 1024
-
-int main (int argc, char* argv[])
-{
-  int x[N];
-
-#pragma acc data copyin (x[0:N])
-  {
-    int *xp;
-#pragma acc host_data use_device (x)
-    {
-      /* Here 'x' being implicitly firstprivate for the parallel region
-        conflicts with it being declared as use_device in the enclosing
-        host_data region.  */
-#pragma acc parallel copyout (xp)
-      {
-        xp = x; /* { dg-error "variable 'x' declared in enclosing 'host_data' region" } */
-      }
-    }
-
-    if (xp != acc_deviceptr (x))
-      abort ();
-  }
-
-  return 0;
-}