+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
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))
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);
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,
+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
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))
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);
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,
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)
{
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)
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
+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.
--- /dev/null
+/* { 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;
+}
--- /dev/null
+/* { 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;
+}
! { 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
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
!$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)
!
! PR fortran/63861
! { dg-xfail-if "<http://gcc.gnu.org/PR63861>" { *-*-* } }
+! { dg-excess-errors "TODO" }
module test
contains
!$acc update self (a)
end subroutine oacc4
end module test
-! { dg-excess-errors "sorry, unimplemented: directive not yet implemented" }
!$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" } }
+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>
-/* { dg-do run } */
+/* { dg-do run { target openacc_nvidia_accel_selected } } */
#include <stdlib.h>
#include <openacc.h>
+++ /dev/null
-/* { 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;
-}
-/* { dg-do run } */
+/* { dg-do run { target openacc_nvidia_accel_selected } } */
#include <openacc.h>
#include <stdlib.h>
-/* { dg-do run } */
+/* { dg-do run { target openacc_nvidia_accel_selected } } */
#include <openacc.h>
#include <stdlib.h>
+++ /dev/null
-/* { 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;
-}