This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [gomp4.1] map clause parsing improvements


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]