Hi!

Cesar and Jim copied, for help with Fortran and generally testsuite
things.

On Mon, 30 Nov 2015 19:30:34 +0000, Julian Brown <jul...@codesourcery.com> 
wrote:
> [patch]

First, thanks!

> Tests look OK (libgomp/gcc/g++/libstdc++), and the new ones pass.

I see a regression (ICE) in gfortran.dg/goacc/coarray.f95 (done: XFAILed,
and obsolete dg-excess-errors directives removed; compare to
gfortran.dg/goacc/coarray_2.f90), and I see new FAILs for non-offloading
execution of libgomp.oacc-c-c++-common/host_data-2.c,
libgomp.oacc-c-c++-common/host_data-4.c, and
libgomp.oacc-c-c++-common/host_data-5.c (done: see below); confirmed by a
number of reports on the <gcc-regress...@gcc.gnu.org> and
<gcc-testresu...@gcc.gnu.org> mailing lists.  I can understand that you
didn't see the Fortran problem if not running Fortrant testing (but
why?), but it's strange that you didn't see the libgomp C/C++ FAILs.

A few patch review items, some of which I've already addressed (see
below).

> --- a/gcc/c/c-parser.c
> +++ b/gcc/c/c-parser.c
> @@ -10279,6 +10279,8 @@ c_parser_omp_clause_name (c_parser *parser)
>           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;

"use_device" sorts before "use_device_ptr".  (Done.)

> @@ -12940,6 +12951,10 @@ 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);

Sorting?  (Done.)

> --- a/gcc/cp/parser.c
> +++ b/gcc/cp/parser.c
> @@ -29232,6 +29232,8 @@ cp_parser_omp_clause_name (cp_parser *parser)
>           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;
>         break;

Likewise.  (Done.)

> @@ -31598,6 +31600,11 @@ 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);

Likewise.  (Done.)

> +#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 after the "accepted syntax" comment.
(Done.)

There is no handlig of OMP_CLAUSE_USE_DEVICE in
gcc/cp/pt.c:tsubst_omp_clauses.  (Done.)

> --- a/gcc/gimplify.c
> +++ b/gcc/gimplify.c

> @@ -6418,6 +6422,7 @@ gimplify_scan_omp_clauses (tree *list_p, gimple_seq 
> *pre_p,
|    if (!lang_GNU_Fortran ())
|      switch (code)
|        {
|        case OMP_TARGET:
>        case OMP_TARGET_DATA:
>        case OMP_TARGET_ENTER_DATA:
>        case OMP_TARGET_EXIT_DATA:
> +      case OACC_HOST_DATA:
>       ctx->target_firstprivatize_array_bases = true;
>        default:
>       break;

I understand it's not yet relevant/supported for OpenMP in Fortran, but
why is C/C++ vs. Fortran being handled differently here for OpenACC
host_data?

> --- a/libgomp/oacc-parallel.c
> +++ b/libgomp/oacc-parallel.c

> +void
> +GOACC_host_data (int device, size_t mapnum,
> +              void **hostaddrs, size_t *sizes, unsigned short *kinds)
> +{
> +  bool host_fallback = device == GOMP_DEVICE_HOST_FALLBACK;
> +  struct target_mem_desc *tgt;
> +
> +#ifdef HAVE_INTTYPES_H
> +  gomp_debug (0, "%s: mapnum=%"PRIu64", hostaddrs=%p, size=%p, kinds=%p\n",
> +           __FUNCTION__, (uint64_t) mapnum, hostaddrs, sizes, kinds);
> +#else
> +  gomp_debug (0, "%s: mapnum=%lu, hostaddrs=%p, sizes=%p, kinds=%p\n",
> +           __FUNCTION__, (unsigned long) mapnum, hostaddrs, sizes, kinds);
> +#endif
> +
> +  goacc_lazy_initialize ();
> +
> +  struct goacc_thread *thr = goacc_thread ();
> +  struct gomp_device_descr *acc_dev = thr->dev;
> +
> +  /* Host fallback or 'do nothing'.  */
> +  if ((acc_dev->capabilities & GOMP_OFFLOAD_CAP_SHARED_MEM)
> +      || host_fallback)
> +    {
> +      tgt = gomp_map_vars (NULL, 0, NULL, NULL, NULL, NULL, true,
> +                        GOMP_MAP_VARS_OPENACC);
> +      tgt->prev = thr->mapped_data;
> +      thr->mapped_data = tgt;
> +
> +      return;
> +    }
> +
> +  gomp_debug (0, "  %s: prepare mappings\n", __FUNCTION__);
> +  tgt = gomp_map_vars (acc_dev, mapnum, hostaddrs, NULL, sizes, kinds, true,
> +                    GOMP_MAP_VARS_OPENACC);
> +  gomp_debug (0, "  %s: mappings prepared\n", __FUNCTION__);
> +  tgt->prev = thr->mapped_data;
> +  thr->mapped_data = tgt;
> +}

Isn't that identical to GOACC_data_start?  Can we thus get rid of it?

> --- /dev/null
> +++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/host_data-1.c
> @@ -0,0 +1,100 @@
> +/* { dg-do run { target openacc_nvidia_accel_selected } } */
> +[...]

> --- /dev/null
> +++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/host_data-2.c
> @@ -0,0 +1,31 @@
> +/* { dg-do run } */

FAILs for non-offloading execution; restrict testing as done in
libgomp/testsuite/libgomp.oacc-c-c++-common/host_data-1.c.  (Done.)
(Hopefully, that's the intention?)

> --- /dev/null
> +++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/host_data-4.c
> @@ -0,0 +1,29 @@
> +/* { dg-do run } */

Likewise.  (Done.)

> --- /dev/null
> +++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/host_data-5.c
> @@ -0,0 +1,38 @@
> +/* { dg-do run } */

Likewise.  (Done.)

> --- /dev/null
> +++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/host_data-3.c
> @@ -0,0 +1,29 @@
> +/* { dg-do compile } */

Compile tests (checking compiler diagnostics) belong into
gcc/testsuite/.  (Done.)

> --- /dev/null
> +++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/host_data-6.c
> @@ -0,0 +1,31 @@
> +/* { dg-do compile } */

Likewise.  (Done.)

What about the test cases present on gomp-4_0-branch,
gcc/testsuite/c-c++-common/goacc/host_data-1.c,
gcc/testsuite/c-c++-common/goacc/host_data-2.c,
gcc/testsuite/c-c++-common/goacc/host_data-3.c, and
gcc/testsuite/c-c++-common/goacc/host_data-4.c, that have not been part
of your submission/commit?

Also, given the missing handling of OMP_CLAUSE_USE_DEVICE in
gcc/cp/pt.c:tsubst_omp_clauses, I assert we don't have any testsuite
coverage for C++ templates.

Your submission/commit didn't have any execution tests for OpenACC
host_data in Fortran.  On gomp-4_0-branch, there is
libgomp/testsuite/libgomp.oacc-fortran/host_data-1.f90 at least.

For the "(Done.)" items, as obvious, committed to trunk in r231184:

commit 2a7545d57731de7d4918a8786c972259488dbc56
Author: tschwinge <tschwinge@138bc75d-0d04-0410-961f-82ee72b054a4>
Date:   Wed Dec 2 15:53:34 2015 +0000

    Some OpenACC host_data cleanup
    
        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.
    
    git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@231184 
138bc75d-0d04-0410-961f-82ee72b054a4
---
 gcc/c/ChangeLog                                      |  5 +++++
 gcc/c/c-parser.c                                     | 12 ++++++------
 gcc/cp/ChangeLog                                     |  6 ++++++
 gcc/cp/parser.c                                      | 20 ++++++++++----------
 gcc/cp/pt.c                                          |  2 ++
 gcc/testsuite/ChangeLog                              | 15 +++++++++++++++
 .../testsuite/c-c++-common/goacc/host_data-5.c       |  6 ------
 .../testsuite/c-c++-common/goacc}/host_data-6.c      |  6 ------
 gcc/testsuite/gfortran.dg/goacc/coarray.f95          |  8 ++++----
 gcc/testsuite/gfortran.dg/goacc/coarray_2.f90        |  2 +-
 gcc/testsuite/gfortran.dg/goacc/host_data-tree.f95   |  1 -
 libgomp/ChangeLog                                    |  9 +++++++++
 .../libgomp.oacc-c-c++-common/host_data-2.c          |  2 +-
 .../libgomp.oacc-c-c++-common/host_data-4.c          |  2 +-
 .../libgomp.oacc-c-c++-common/host_data-5.c          |  2 +-
 15 files changed, 61 insertions(+), 37 deletions(-)

diff --git gcc/c/ChangeLog gcc/c/ChangeLog
index acb8ee4..e517467 100644
--- gcc/c/ChangeLog
+++ gcc/c/ChangeLog
@@ -1,3 +1,8 @@
+2015-12-02  Thomas Schwinge  <tho...@codesourcery.com>
+
+       * c-parser.c (c_parser_omp_clause_name)
+       (c_parser_oacc_all_clauses): Alphabetical sorting.
+
 2015-12-02  Jakub Jelinek  <ja...@redhat.com>
 
        PR c/68533
diff --git gcc/c/c-parser.c gcc/c/c-parser.c
index d4c512f..ee0a305 100644
--- gcc/c/c-parser.c
+++ gcc/c/c-parser.c
@@ -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,
diff --git gcc/cp/ChangeLog gcc/cp/ChangeLog
index 385ba63..d2a7e99 100644
--- gcc/cp/ChangeLog
+++ gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2015-12-02  Thomas Schwinge  <tho...@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  <ar...@linux.vnet.ibm.com>
 
        PR gcov-profile/68603
diff --git gcc/cp/parser.c gcc/cp/parser.c
index f78df02..b4ecac7 100644
--- gcc/cp/parser.c
+++ gcc/cp/parser.c
@@ -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)
 {
diff --git gcc/cp/pt.c gcc/cp/pt.c
index 5befd64..d1d1e4e 100644
--- gcc/cp/pt.c
+++ gcc/cp/pt.c
@@ -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
diff --git gcc/testsuite/ChangeLog gcc/testsuite/ChangeLog
index 5fe26bb..4f7af87 100644
--- gcc/testsuite/ChangeLog
+++ gcc/testsuite/ChangeLog
@@ -1,3 +1,18 @@
+2015-12-02  Thomas Schwinge  <tho...@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  <tho...@codesourcery.com>
+           Julian Brown  <jul...@codesourcery.com>
+           James Norris  <james_nor...@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  <t...@codesourcery.com>
 
        * c-c++-common/goacc/kernels-default-2.c: New test.
diff --git libgomp/testsuite/libgomp.oacc-c-c++-common/host_data-3.c 
gcc/testsuite/c-c++-common/goacc/host_data-5.c
similarity index 82%
rename from libgomp/testsuite/libgomp.oacc-c-c++-common/host_data-3.c
rename to gcc/testsuite/c-c++-common/goacc/host_data-5.c
index 7d9b5f7..f372fbd 100644
--- libgomp/testsuite/libgomp.oacc-c-c++-common/host_data-3.c
+++ gcc/testsuite/c-c++-common/goacc/host_data-5.c
@@ -1,8 +1,5 @@
 /* { dg-do compile } */
 
-#include <openacc.h>
-#include <stdlib.h>
-
 #define N 1024
 
 int main (int argc, char* argv[])
@@ -20,9 +17,6 @@ int main (int argc, char* argv[])
         xp = x;
       }
     }
-
-    if (xp != acc_deviceptr (x))
-      abort ();
   }
 
   return 0;
diff --git libgomp/testsuite/libgomp.oacc-c-c++-common/host_data-6.c 
gcc/testsuite/c-c++-common/goacc/host_data-6.c
similarity index 84%
rename from libgomp/testsuite/libgomp.oacc-c-c++-common/host_data-6.c
rename to gcc/testsuite/c-c++-common/goacc/host_data-6.c
index a841488..8be7912 100644
--- libgomp/testsuite/libgomp.oacc-c-c++-common/host_data-6.c
+++ gcc/testsuite/c-c++-common/goacc/host_data-6.c
@@ -1,8 +1,5 @@
 /* { dg-do compile } */
 
-#include <openacc.h>
-#include <stdlib.h>
-
 #define N 1024
 
 int main (int argc, char* argv[])
@@ -22,9 +19,6 @@ int main (int argc, char* argv[])
         xp = x; /* { dg-error "variable 'x' declared in enclosing 'host_data' 
region" } */
       }
     }
-
-    if (xp != acc_deviceptr (x))
-      abort ();
   }
 
   return 0;
diff --git gcc/testsuite/gfortran.dg/goacc/coarray.f95 
gcc/testsuite/gfortran.dg/goacc/coarray.f95
index 130ffc3..d2f10d5 100644
--- gcc/testsuite/gfortran.dg/goacc/coarray.f95
+++ gcc/testsuite/gfortran.dg/goacc/coarray.f95
@@ -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)
diff --git gcc/testsuite/gfortran.dg/goacc/coarray_2.f90 
gcc/testsuite/gfortran.dg/goacc/coarray_2.f90
index f9cf9ac..87e04d5 100644
--- gcc/testsuite/gfortran.dg/goacc/coarray_2.f90
+++ gcc/testsuite/gfortran.dg/goacc/coarray_2.f90
@@ -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" }
diff --git gcc/testsuite/gfortran.dg/goacc/host_data-tree.f95 
gcc/testsuite/gfortran.dg/goacc/host_data-tree.f95
index e4c8205..7a5eea6 100644
--- gcc/testsuite/gfortran.dg/goacc/host_data-tree.f95
+++ gcc/testsuite/gfortran.dg/goacc/host_data-tree.f95
@@ -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" } } 
diff --git libgomp/ChangeLog libgomp/ChangeLog
index ddf836a..cde0b5c 100644
--- libgomp/ChangeLog
+++ libgomp/ChangeLog
@@ -1,3 +1,12 @@
+2015-12-02  Thomas Schwinge  <tho...@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  <jul...@codesourcery.com>
            James Norris  <james_nor...@mentor.com>
 
diff --git libgomp/testsuite/libgomp.oacc-c-c++-common/host_data-2.c 
libgomp/testsuite/libgomp.oacc-c-c++-common/host_data-2.c
index 9820286..614f143 100644
--- libgomp/testsuite/libgomp.oacc-c-c++-common/host_data-2.c
+++ libgomp/testsuite/libgomp.oacc-c-c++-common/host_data-2.c
@@ -1,4 +1,4 @@
-/* { dg-do run } */
+/* { dg-do run { target openacc_nvidia_accel_selected } } */
 
 #include <stdlib.h>
 #include <openacc.h>
diff --git libgomp/testsuite/libgomp.oacc-c-c++-common/host_data-4.c 
libgomp/testsuite/libgomp.oacc-c-c++-common/host_data-4.c
index 3504f27..0ab5a35 100644
--- libgomp/testsuite/libgomp.oacc-c-c++-common/host_data-4.c
+++ libgomp/testsuite/libgomp.oacc-c-c++-common/host_data-4.c
@@ -1,4 +1,4 @@
-/* { dg-do run } */
+/* { dg-do run { target openacc_nvidia_accel_selected } } */
 
 #include <openacc.h>
 #include <stdlib.h>
diff --git libgomp/testsuite/libgomp.oacc-c-c++-common/host_data-5.c 
libgomp/testsuite/libgomp.oacc-c-c++-common/host_data-5.c
index 268e919..a3737a7 100644
--- libgomp/testsuite/libgomp.oacc-c-c++-common/host_data-5.c
+++ libgomp/testsuite/libgomp.oacc-c-c++-common/host_data-5.c
@@ -1,4 +1,4 @@
-/* { dg-do run } */
+/* { dg-do run { target openacc_nvidia_accel_selected } } */
 
 #include <openacc.h>
 #include <stdlib.h>


Grüße
 Thomas

Attachment: signature.asc
Description: PGP signature

Reply via email to