On Mon, Oct 26, 2015 at 03:53:57PM +0300, Ilya Verbin wrote:
> @@ -7363,7 +7363,7 @@ gimplify_adjust_omp_clauses (gimple_seq *pre_p, tree 
> *list_p,
>         n = splay_tree_lookup (ctx->variables, (splay_tree_key) decl);
>         if ((ctx->region_type & ORT_TARGET) != 0
>             && !(n->value & GOVD_SEEN)
> -           && ((OMP_CLAUSE_MAP_KIND (c) & GOMP_MAP_FLAG_ALWAYS) == 0
> +           && (GOMP_MAP_ALWAYS_P (OMP_CLAUSE_MAP_KIND (c)) == 0
>                 || OMP_CLAUSE_MAP_KIND (c) == GOMP_MAP_STRUCT))

The || OMP_CLAUSE_MAP_KIND (c) == GOMP_MAP_STRUCT part can go then too,
it was there only because (OMP_CLAUSE_MAP_KIND (c) & GOMP_MAP_FLAG_ALWAYS)
has been non-zero for GOMP_MAP_STRUCT (and the () pair around the condition
too).
We want to be able to remove all map clauses on the target construct, except
if it is always {to,from,tofrom}.
We do not want to remove release or delete, but those only exist on target
exit data and thus are handled by (ctx->region_type & ORT_TARGET) != 0.

> @@ -142,6 +143,10 @@ enum gomp_map_kind
>  #define GOMP_MAP_ALWAYS_FROM_P(X) \
>    (((X) == GOMP_MAP_ALWAYS_FROM) || ((X) == GOMP_MAP_ALWAYS_TOFROM))
>  
> +#define GOMP_MAP_ALWAYS_P(X) \
> +  (((X) == GOMP_MAP_ALWAYS_TO) || ((X) == GOMP_MAP_ALWAYS_FROM) \
> +   || ((X) == GOMP_MAP_ALWAYS_TOFROM))

You could simplify this e.g. to
  (((X) == GOMP_MAP_ALWAYS_TO) || GOMP_MAP_ALWAYS_FROM_P (X))
or
  (GOMP_MAP_ALWAYS_TO_P (X) || ((X) == GOMP_MAP_ALWAYS_FROM))

Otherwise, LGTM.

        Jakub

Reply via email to