[Patch][GCC12] Fortran/OpenMP: Add 'omp depobj' and 'depend(mutexinoutset:'

Jakub Jelinek jakub@redhat.com
Wed Mar 17 18:29:36 GMT 2021


On Wed, Mar 17, 2021 at 07:19:29PM +0100, Tobias Burnus wrote:
> @@ -1831,6 +1852,7 @@ show_omp_node (int level, gfc_code *c)
>      case EXEC_OMP_FLUSH: name = "FLUSH"; break;
>      case EXEC_OMP_MASTER: name = "MASTER"; break;
>      case EXEC_OMP_ORDERED: name = "ORDERED"; break;
> +    case EXEC_OMP_DEPOBJ: name = "DEPBOBJ"; break;

s/DEPBOBJ/DEPOBJ/

> +	  || omp_clauses->depobj->ts.kind != 2*gfc_index_integer_kind

Formatting (several times), I think we should use 2 * gfc_index_integer_kind

> --- a/gcc/fortran/trans-openmp.c
> +++ b/gcc/fortran/trans-openmp.c
> @@ -2545,6 +2545,8 @@ gfc_trans_omp_clauses (stmtblock_t *block, gfc_omp_clauses *clauses,
>  		  tree decl = gfc_trans_omp_variable (n->sym, false);
>  		  if (gfc_omp_privatize_by_reference (decl))
>  		    decl = build_fold_indirect_ref (decl);
> +		  if (POINTER_TYPE_P (TREE_TYPE (decl)))
> +		    decl = build_fold_indirect_ref (decl);

I'm a little bit worried about this, are you sure it won't affect anything
but depobj?

> +  int k = -1; /* omp_clauses->destroy */
> +  if (!code->ext.omp_clauses->destroy)
> +    switch (code->ext.omp_clauses->depobj_update != OMP_DEPEND_UNSET
> +	    ? code->ext.omp_clauses->depobj_update : n->u.depend_op)
> +      {
> +      case OMP_DEPEND_IN: k = GOMP_DEPEND_IN; break;
> +      case OMP_DEPEND_OUT: k = GOMP_DEPEND_IN; break;
> +      case OMP_DEPEND_INOUT: k = GOMP_DEPEND_IN; break;
> +      case OMP_DEPEND_MUTEXINOUTSET: k = GOMP_DEPEND_MUTEXINOUTSET; break;
> +      case OMP_DEPEND_DEPOBJ: k = GOMP_DEPEND_MUTEXINOUTSET; break;

Can depobj_update be OMP_DEPEND_DEPOBJ ?

Otherwise LGTM.

	Jakub



More information about the Gcc-patches mailing list