Message ID | 874lbythpn.fsf@euler.schwinge.homeip.net |
---|---|
State | New |
Headers | show |
Series | [committed] Clean up Fortran OpenACC wait clause handling | expand |
On Fri, 30 Nov 2018 21:48:20 +0100 Thomas Schwinge <thomas@codesourcery.com> wrote: > Hi! > > commit 3e3de40a5ab21d72f08071a7a40120dd05608cc1 > Author: tschwinge <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. 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
Hi Julian! On Mon, 3 Dec 2018 16:02:23 +0000, Julian Brown <julian@codesourcery.com> wrote: > On Fri, 30 Nov 2018 21:48:20 +0100 > Thomas Schwinge <thomas@codesourcery.com> wrote: > > commit 3e3de40a5ab21d72f08071a7a40120dd05608cc1 > > Author: tschwinge <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. > > 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? Right; that's what I provided an incremental patch for in my review in <https://gcc.gnu.org/ml/gcc-patches/2018-11/msg00481.html>, and asked Chung-Lin (and he agreed) to incorporate. Grüße Thomas
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 <thomas@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)