Discussion:
[committed] Clean up Fortran OpenACC wait clause handling
Thomas Schwinge
2018-11-30 20:48:20 UTC
Permalink
Hi!

commit 3e3de40a5ab21d72f08071a7a40120dd05608cc1
Author: tschwinge <***@138bc75d-0d04-0410-961f-82ee72b054a4>
Date: Fri Nov 30 20:39:18 2018 +0000

Clean up Fortran OpenACC wait clause handling

"wait" can be deduced from "wait_list".

gcc/fortran/
* gfortran.h (struct gfc_omp_clauses): Remove "wait". Adjust all
users.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/***@266685 138bc75d-0d04-0410-961f-82ee72b054a4
---
gcc/fortran/ChangeLog | 3 +++
gcc/fortran/gfortran.h | 2 +-
gcc/fortran/openmp.c | 7 ++-----
3 files changed, 6 insertions(+), 6 deletions(-)

diff --git gcc/fortran/ChangeLog gcc/fortran/ChangeLog
index 435ecf82f970..76bb0b9f5c0c 100644
--- gcc/fortran/ChangeLog
+++ gcc/fortran/ChangeLog
@@ -1,5 +1,8 @@
2018-11-30 Thomas Schwinge <***@codesourcery.com>

+ * gfortran.h (struct gfc_omp_clauses): Remove "wait". Adjust all
+ users.
+
* openmp.c (gfc_match_omp_clauses): Support multiple OpenACC wait
clauses.

diff --git gcc/fortran/gfortran.h gcc/fortran/gfortran.h
index 4dd6298b3ddb..a14b4c44a18a 100644
--- gcc/fortran/gfortran.h
+++ gcc/fortran/gfortran.h
@@ -1345,7 +1345,7 @@ typedef struct gfc_omp_clauses
gfc_expr_list *wait_list;
gfc_expr_list *tile_list;
unsigned async:1, gang:1, worker:1, vector:1, seq:1, independent:1;
- unsigned wait:1, par_auto:1, gang_static:1;
+ unsigned par_auto:1, gang_static:1;
unsigned if_present:1, finalize:1;
locus loc;

diff --git gcc/fortran/openmp.c gcc/fortran/openmp.c
index e1560c1fe372..fb9c073ff779 100644
--- gcc/fortran/openmp.c
+++ gcc/fortran/openmp.c
@@ -1878,7 +1878,6 @@ gfc_match_omp_clauses (gfc_omp_clauses **cp, const omp_mask mask,
if ((mask & OMP_CLAUSE_WAIT)
&& gfc_match ("wait") == MATCH_YES)
{
- c->wait = true;
match m = match_oacc_expr_list (" (", &c->wait_list, false);
if (m == MATCH_ERROR)
{
@@ -4779,10 +4778,8 @@ resolve_omp_clauses (gfc_code *code, gfc_omp_clauses *omp_clauses,
resolve_positive_int_expr (omp_clauses->worker_expr, "WORKER");
if (omp_clauses->vector_expr)
resolve_positive_int_expr (omp_clauses->vector_expr, "VECTOR");
- if (omp_clauses->wait)
- if (omp_clauses->wait_list)
- for (el = omp_clauses->wait_list; el; el = el->next)
- resolve_scalar_int_expr (el->expr, "WAIT");
+ for (el = omp_clauses->wait_list; el; el = el->next)
+ resolve_scalar_int_expr (el->expr, "WAIT");
if (omp_clauses->collapse && omp_clauses->tile_list)
gfc_error ("Incompatible use of TILE and COLLAPSE at %L", &code->loc);
if (omp_clauses->depend_source && code->op != EXEC_OMP_ORDERED)


Grüße
Thomas
Julian Brown
2018-12-03 16:02:23 UTC
Permalink
On Fri, 30 Nov 2018 21:48:20 +0100
Post by Thomas Schwinge
Hi!
commit 3e3de40a5ab21d72f08071a7a40120dd05608cc1
Date: Fri Nov 30 20:39:18 2018 +0000
Clean up Fortran OpenACC wait clause handling
"wait" can be deduced from "wait_list".
gcc/fortran/
* gfortran.h (struct gfc_omp_clauses): Remove "wait".
Adjust all users.
This appears to conflict with Chung-Lin's uncommitted patch ("Properly
handle wait clause with no arguments"):

https://gcc.gnu.org/ml/gcc-patches/2018-08/msg01973.html

I'm not sure if such waits have a "wait_list" or not -- I guess not
though? If so this patch might need to be reverted.

Thanks,

Julian

Loading...