diff options
author | Jakub Jelinek <jakub@redhat.com> | 2020-01-29 09:39:16 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@redhat.com> | 2020-01-29 09:39:16 +0100 |
commit | aa1b56967d85bfc80d71341395f862ec2b30ca36 (patch) | |
tree | d49c903d0658da8b7edbbf0a814c2d7487425490 | |
parent | 7892ff37f407ef47ee852f281a80fa0dba6a5a67 (diff) | |
download | gcc-aa1b56967d85bfc80d71341395f862ec2b30ca36.zip gcc-aa1b56967d85bfc80d71341395f862ec2b30ca36.tar.gz gcc-aa1b56967d85bfc80d71341395f862ec2b30ca36.tar.bz2 |
openmp: Handle rest of EXEC_OACC_* in oacc_code_to_statement [PR93463]
As the testcase shows, some EXEC_OACC_* codes weren't handled in
oacc_code_to_statement. Fixed thusly.
2020-01-29 Jakub Jelinek <jakub@redhat.com>
PR fortran/93463
* openmp.c (oacc_code_to_statement): Handle
EXEC_OACC_{ROUTINE,UPDATE,WAIT,CACHE,{ENTER,EXIT}_DATA,DECLARE}.
* gfortran.dg/goacc/pr93463.f90: New test.
-rw-r--r-- | gcc/fortran/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/fortran/openmp.c | 14 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/goacc/pr93463.f90 | 15 |
4 files changed, 40 insertions, 0 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 0033246..12e5996 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2020-01-29 Jakub Jelinek <jakub@redhat.com> + + PR fortran/93463 + * openmp.c (oacc_code_to_statement): Handle + EXEC_OACC_{ROUTINE,UPDATE,WAIT,CACHE,{ENTER,EXIT}_DATA,DECLARE}. + 2020-01-28 Andrew Benson <abensonca@gmail.com> PR fortran/93461 diff --git a/gcc/fortran/openmp.c b/gcc/fortran/openmp.c index 0accb18..b885e86 100644 --- a/gcc/fortran/openmp.c +++ b/gcc/fortran/openmp.c @@ -6021,6 +6021,20 @@ oacc_code_to_statement (gfc_code *code) return ST_OACC_LOOP; case EXEC_OACC_ATOMIC: return ST_OACC_ATOMIC; + case EXEC_OACC_ROUTINE: + return ST_OACC_ROUTINE; + case EXEC_OACC_UPDATE: + return ST_OACC_UPDATE; + case EXEC_OACC_WAIT: + return ST_OACC_WAIT; + case EXEC_OACC_CACHE: + return ST_OACC_CACHE; + case EXEC_OACC_ENTER_DATA: + return ST_OACC_ENTER_DATA; + case EXEC_OACC_EXIT_DATA: + return ST_OACC_EXIT_DATA; + case EXEC_OACC_DECLARE: + return ST_OACC_DECLARE; default: gcc_unreachable (); } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index a4a775d..d13de9a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2020-01-29 Jakub Jelinek <jakub@redhat.com> + + PR fortran/93463 + * gfortran.dg/goacc/pr93463.f90: New test. + 2020-01-29 Richard Biener <rguenther@suse.de> PR tree-optimization/93428 diff --git a/gcc/testsuite/gfortran.dg/goacc/pr93463.f90 b/gcc/testsuite/gfortran.dg/goacc/pr93463.f90 new file mode 100644 index 0000000..920892f --- /dev/null +++ b/gcc/testsuite/gfortran.dg/goacc/pr93463.f90 @@ -0,0 +1,15 @@ +! PR fortran/93463 +! { dg-do compile { target fopenmp } } +! { dg-additional-options "-fopenmp" } + +program pr93463 + integer :: i, x, y, z + !$omp parallel do + do i = 1, 4 + !$acc enter data create(x) ! { dg-error "ACC ENTER DATA directive cannot be specified within" } + !$acc exit data copyout(x) ! { dg-error "ACC EXIT DATA directive cannot be specified within" } + !$acc cache(y) ! { dg-error "ACC CACHE directive cannot be specified within" } + !$acc wait(1) ! { dg-error "ACC WAIT directive cannot be specified within" } + !$acc update self(z) ! { dg-error "ACC UPDATE directive cannot be specified within" } + end do +end |