On Fri, Apr 17, 2020 at 05:57:06PM +0200, Tobias Burnus wrote:
> --- a/gcc/gimplify.c
> +++ b/gcc/gimplify.c
> @@ -8785,11 +8785,15 @@ gimplify_scan_omp_clauses (tree *list_p, gimple_seq
> *pre_p,
> 'exit data' - and in particular for 'delete:' - having an 'alloc:'
> does not make sense. Likewise, for 'update' only transferring the
> data itself is needed as the rest has been handled in previous
> - directives. */
> - if ((code == OMP_TARGET_EXIT_DATA || code == OMP_TARGET_UPDATE)
> - && (OMP_CLAUSE_MAP_KIND (c) == GOMP_MAP_POINTER
> - || OMP_CLAUSE_MAP_KIND (c) == GOMP_MAP_TO_PSET))
> - remove = true;
> + directives. However, for 'exit data', the array descriptor needs
> + to be delete; hence, we turn the MAP_TO_PSET into a MAP_DELETE. */
> + if (code == OMP_TARGET_EXIT_DATA
> + && OMP_CLAUSE_MAP_KIND (c) == GOMP_MAP_TO_PSET)
> + OMP_CLAUSE_SET_MAP_KIND (c, GOMP_MAP_DELETE);
> + else if ((code == OMP_TARGET_EXIT_DATA || code == OMP_TARGET_UPDATE)
> + && (OMP_CLAUSE_MAP_KIND (c) == GOMP_MAP_POINTER
> + || OMP_CLAUSE_MAP_KIND (c) == GOMP_MAP_TO_PSET))
> + remove = true;
Wrong indentation of the last line, should be 1 tab + 4 spaces instead
of 2 tabs.
Otherwise LGTM, thanks.
Jakub