https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96668

--- Comment #5 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Tobias Burnus <bur...@gcc.gnu.org>:

https://gcc.gnu.org/g:972da557463ec946a31577294764a186b9821012

commit r11-3200-g972da557463ec946a31577294764a186b9821012
Author: Tobias Burnus <tob...@codesourcery.com>
Date:   Tue Sep 15 09:24:47 2020 +0200

    OpenMP/Fortran: Fix (re)mapping of allocatable/pointer arrays [PR96668]

    gcc/cp/ChangeLog:

            PR fortran/96668
            * cp-gimplify.c (cxx_omp_finish_clause): Add bool openacc arg.
            * cp-tree.h (cxx_omp_finish_clause): Likewise
            * semantics.c (handle_omp_for_class_iterator): Update call.

    gcc/fortran/ChangeLog:

            PR fortran/96668
            * trans.h (gfc_omp_finish_clause): Add bool openacc arg.
            * trans-openmp.c (gfc_omp_finish_clause): Ditto. Use
            GOMP_MAP_ALWAYS_POINTER with PSET for pointers.
            (gfc_trans_omp_clauses): Like the latter and also if the always
            modifier is used.

    gcc/ChangeLog:

            PR fortran/96668
            * gimplify.c (gimplify_omp_for): Add 'bool openacc' argument;
            update omp_finish_clause calls.
            (gimplify_adjust_omp_clauses_1, gimplify_adjust_omp_clauses,
            gimplify_expr, gimplify_omp_loop): Update omp_finish_clause
            and/or gimplify_for calls.
            * langhooks-def.h (lhd_omp_finish_clause): Add bool openacc arg.
            * langhooks.c (lhd_omp_finish_clause): Likewise.
            * langhooks.h (lhd_omp_finish_clause): Likewise.
            * omp-low.c (scan_sharing_clauses): Keep GOMP_MAP_TO_PSET cause for
            'declare target' vars.

    include/ChangeLog:

            PR fortran/96668
            * gomp-constants.h (GOMP_MAP_ALWAYS_POINTER_P): Define.

    libgomp/ChangeLog:

            PR fortran/96668
            * libgomp.h (struct target_var_desc): Add has_null_ptr_assoc
member.
            * target.c (gomp_map_vars_existing): Add always_to_flag flag.
            (gomp_map_vars_existing): Update call to it.
            (gomp_map_fields_existing): Likewise
            (gomp_map_vars_internal): Update PSET handling such that if a
nullptr is
            now allocated or if GOMP_MAP_POINTER is used PSET is updated and
pointer
            remapped.
            (GOMP_target_enter_exit_data): Hanlde GOMP_MAP_ALWAYS_POINTER like
            GOMP_MAP_POINTER.
            * testsuite/libgomp.fortran/map-alloc-ptr-1.f90: New test.
            * testsuite/libgomp.fortran/map-alloc-ptr-2.f90: New test.

Reply via email to