mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-18 23:31:22 +08:00
Support multiple OpenACC wait clauses
Support for this is not explicitly called for in OpenACC 2.6, but given that GCC internally decomposes "wait (1, 2)" into "wait (1) wait (2)" (similar for other clauses, too), it's reasonable to also support that syntax in the front ends -- which happens to already be the case for C, C++, and easy enough to do for Fortran. gcc/fortran/ * openmp.c (gfc_match_omp_clauses): Support multiple OpenACC wait clauses. gcc/testsuite/ * c-c++-common/goacc/asyncwait-5.c: New file. * gfortran.dg/goacc/asyncwait-5.f: Likewise. From-SVN: r266684
This commit is contained in:
parent
c223608f54
commit
c34f4fbcc4
@ -1,3 +1,8 @@
|
||||
2018-11-30 Thomas Schwinge <thomas@codesourcery.com>
|
||||
|
||||
* openmp.c (gfc_match_omp_clauses): Support multiple OpenACC wait
|
||||
clauses.
|
||||
|
||||
2018-11-27 Martin Liska <mliska@suse.cz>
|
||||
|
||||
* decl.c (gfc_match_gcc_builtin): New function.
|
||||
|
@ -1876,7 +1876,6 @@ gfc_match_omp_clauses (gfc_omp_clauses **cp, const omp_mask mask,
|
||||
break;
|
||||
case 'w':
|
||||
if ((mask & OMP_CLAUSE_WAIT)
|
||||
&& !c->wait
|
||||
&& gfc_match ("wait") == MATCH_YES)
|
||||
{
|
||||
c->wait = true;
|
||||
|
@ -1,3 +1,8 @@
|
||||
2018-11-30 Thomas Schwinge <thomas@codesourcery.com>
|
||||
|
||||
* c-c++-common/goacc/asyncwait-5.c: New file.
|
||||
* gfortran.dg/goacc/asyncwait-5.f: Likewise.
|
||||
|
||||
2018-11-30 Peter Bergner <bergner@linux.ibm.com>
|
||||
|
||||
PR target/87496
|
||||
|
14
gcc/testsuite/c-c++-common/goacc/asyncwait-5.c
Normal file
14
gcc/testsuite/c-c++-common/goacc/asyncwait-5.c
Normal file
@ -0,0 +1,14 @@
|
||||
/* Multiple OpenACC wait clauses. */
|
||||
|
||||
/* { dg-additional-options "-fdump-tree-original" } */
|
||||
|
||||
void f()
|
||||
{
|
||||
#pragma acc parallel async (1) wait (14)
|
||||
;
|
||||
/* { dg-final { scan-tree-dump-times "(?n)#pragma acc parallel wait\\(14\\) async\\(1\\)$" 1 "original" } } */
|
||||
|
||||
#pragma acc parallel async (2) wait (11, 12) wait (13)
|
||||
;
|
||||
/* { dg-final { scan-tree-dump-times "(?n)#pragma acc parallel wait\\(13\\) wait\\(12\\) wait\\(11\\) async\\(2\\)\$" 1 "original" } } */
|
||||
}
|
13
gcc/testsuite/gfortran.dg/goacc/asyncwait-5.f
Normal file
13
gcc/testsuite/gfortran.dg/goacc/asyncwait-5.f
Normal file
@ -0,0 +1,13 @@
|
||||
! Multiple OpenACC wait clauses.
|
||||
|
||||
! { dg-additional-options "-fdump-tree-original" }
|
||||
|
||||
!$ACC PARALLEL ASYNC (1) WAIT (14)
|
||||
!$ACC END PARALLEL
|
||||
! { dg-final { scan-tree-dump-times "(?n)#pragma acc parallel async\\(1\\) wait\\(14\\)$" 1 "original" } }
|
||||
|
||||
!$ACC PARALLEL ASYNC (2) WAIT (11, 12) WAIT(13)
|
||||
!$ACC END PARALLEL
|
||||
! { dg-final { scan-tree-dump-times "(?n)#pragma acc parallel async\\(2\\) wait\\(11\\) wait\\(12\\) wait\\(13\\)$" 1 "original" } }
|
||||
|
||||
END
|
Loading…
x
Reference in New Issue
Block a user