diff options
author | Thomas Schwinge <thomas@codesourcery.com> | 2015-12-02 16:53:34 +0100 |
---|---|---|
committer | Thomas Schwinge <tschwinge@gcc.gnu.org> | 2015-12-02 16:53:34 +0100 |
commit | ff7a55bf56a6f148b29c8fd44ca90c4e535fc2bd (patch) | |
tree | c8f7da9f522b4ae53b8fc0d2a564056033d1bbfb /gcc | |
parent | db0f1c7a906bd8798a4016c1622f5999897e7469 (diff) | |
download | gcc-ff7a55bf56a6f148b29c8fd44ca90c4e535fc2bd.zip gcc-ff7a55bf56a6f148b29c8fd44ca90c4e535fc2bd.tar.gz gcc-ff7a55bf56a6f148b29c8fd44ca90c4e535fc2bd.tar.bz2 |
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.
Co-Authored-By: James Norris <James_Norris@mentor.com>
Co-Authored-By: Julian Brown <julian@codesourcery.com>
From-SVN: r231184
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/c/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/c/c-parser.c | 12 | ||||
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/parser.c | 20 | ||||
-rw-r--r-- | gcc/cp/pt.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 15 | ||||
-rw-r--r-- | gcc/testsuite/c-c++-common/goacc/host_data-5.c | 23 | ||||
-rw-r--r-- | gcc/testsuite/c-c++-common/goacc/host_data-6.c | 25 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/goacc/coarray.f95 | 8 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/goacc/coarray_2.f90 | 2 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/goacc/host_data-tree.f95 | 1 |
11 files changed, 97 insertions, 22 deletions
diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog index acb8ee4..e517467 100644 --- a/gcc/c/ChangeLog +++ b/gcc/c/ChangeLog @@ -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 diff --git a/gcc/c/c-parser.c b/gcc/c/c-parser.c index d4c512f..ee0a305 100644 --- a/gcc/c/c-parser.c +++ b/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 a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 385ba63..d2a7e99 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -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 diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index f78df02..b4ecac7 100644 --- a/gcc/cp/parser.c +++ b/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 a/gcc/cp/pt.c b/gcc/cp/pt.c index 5befd64..d1d1e4e 100644 --- a/gcc/cp/pt.c +++ b/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 a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 5fe26bb..4f7af87 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -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 index 0000000..f372fbd --- /dev/null +++ b/gcc/testsuite/c-c++-common/goacc/host_data-5.c @@ -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 index 0000000..8be7912 --- /dev/null +++ b/gcc/testsuite/c-c++-common/goacc/host_data-6.c @@ -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; +} diff --git a/gcc/testsuite/gfortran.dg/goacc/coarray.f95 b/gcc/testsuite/gfortran.dg/goacc/coarray.f95 index 130ffc3..d2f10d5 100644 --- a/gcc/testsuite/gfortran.dg/goacc/coarray.f95 +++ b/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 a/gcc/testsuite/gfortran.dg/goacc/coarray_2.f90 b/gcc/testsuite/gfortran.dg/goacc/coarray_2.f90 index f9cf9ac..87e04d5 100644 --- a/gcc/testsuite/gfortran.dg/goacc/coarray_2.f90 +++ b/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 a/gcc/testsuite/gfortran.dg/goacc/host_data-tree.f95 b/gcc/testsuite/gfortran.dg/goacc/host_data-tree.f95 index e4c8205..7a5eea6 100644 --- a/gcc/testsuite/gfortran.dg/goacc/host_data-tree.f95 +++ b/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" } } |