[PATCH, OpenACC] Enable GOMP_MAP_FIRSTPRIVATE_INT for OpenACC

Jakub Jelinek jakub@redhat.com
Tue Dec 18 12:47:00 GMT 2018


On Thu, Dec 13, 2018 at 03:44:25PM +0000, Julian Brown wrote:
> +static tree
> +convert_to_firstprivate_int (tree var, gimple_seq *gs)
> +{
> +  tree type = TREE_TYPE (var), new_type = NULL_TREE;
> +  tree tmp = NULL_TREE;
> +
> +  if (omp_is_reference (var))
> +    type = TREE_TYPE (type);
> +
> +  if (INTEGRAL_TYPE_P (type) || POINTER_TYPE_P (type))
> +    {
> +      if (omp_is_reference (var))
> +	{
> +	  tmp = create_tmp_var (type);
> +	  gimplify_assign (tmp, build_simple_mem_ref (var), gs);
> +	  var = tmp;
> +	}
> +
> +      return fold_convert (pointer_sized_int_node, var);
> +    }
> +
> +  gcc_assert (tree_to_uhwi (TYPE_SIZE (type)) <= POINTER_SIZE);
> +
> +  new_type = lang_hooks.types.type_for_size (tree_to_uhwi (TYPE_SIZE (type)),
> +					     true);
> +
> +  if (omp_is_reference (var))
> +    {
> +      tmp = create_tmp_var (type);
> +      gimplify_assign (tmp, build_simple_mem_ref (var), gs);
> +      var = tmp;
> +    }

Why are you duplicating this if?  Can't you just do it before the
  if (INTEGRAL_TYPE_P (type) || POINTER_TYPE_P (type))
test once, even better in the same if as you do type = TREE_TYPE (type); ?

Otherwise ok from me, but please check with Thomas if he is ok with it too.

	Jakub



More information about the Gcc-patches mailing list