On Thu, Oct 04, 2018 at 02:04:13PM +0100, Julian Brown wrote:
>       gcc/
>       * omp-low.c (scan_sharing_clauses): Update handling of OpenACC declare
>       create, declare copyin and declare deviceptr to have local lifetimes.
>       (convert_to_firstprivate_int): Handle pointer types.
>       (convert_from_firstprivate_int): Likewise.  Create local storage for
>       the values being pointed to.  Add new orig_type argument.
>       (lower_omp_target): Handle GOMP_MAP_DECLARE_{ALLOCATE,DEALLOCATE}.
>       Add orig_type argument to convert_from_firstprivate_int call.
>       Allow pointer types with GOMP_MAP_FIRSTPRIVATE_INT.  Don't privatize
>       firstprivate VLAs.
>       * tree-pretty-print.c (dump_omp_clause): Handle
>       GOMP_MAP_DECLARE_{ALLOCATE,DEALLOCATE}.
> 
>       gcc/fortran/
>       * gfortran.h (enum gfc_omp_map_op): Add OMP_MAP_DECLARE_ALLOCATE,
>       OMP_MAP_DECLARE_DEALLOCATE.
>       (gfc_omp_clauses): Add update_allocatable.
>       * trans-array.c (gfc_array_allocate): Call
>       gfc_trans_oacc_declare_allocate for decls that have oacc_declare_create
>       attribute set.
>       * trans-decl.c (add_attributes_to_decl): Enable lowering of OpenACC
>       declare create, declare copyin and declare deviceptr clauses.
>       (find_module_oacc_declare_clauses): Relax oacc_declare_create to
>       OMP_MAP_ALLOC, and oacc_declare_copyin to OMP_MAP_TO, in order to
>       match OpenACC 2.5 semantics.
>       (finish_oacc_declare): Reset module_oacc_clauses before scanning each
>       namespace.
>       * trans-openmp.c (gfc_trans_omp_clauses): Use GOMP_MAP_ALWAYS_POINTER
>       (for update directive) or GOMP_MAP_FIRSTPRIVATE_POINTER (otherwise) for
>       allocatable scalar decls.  Handle OMP_MAP_DECLARE_{ALLOCATE,DEALLOCATE}
>       clauses.
>       (gfc_trans_oacc_executable_directive): Use GOMP_MAP_ALWAYS_POINTER
>       for allocatable scalar data clauses inside acc update directives.
>       (gfc_trans_oacc_declare_allocate): New function.
>       * trans-stmt.c (gfc_trans_allocate): Call
>       gfc_trans_oacc_declare_allocate for decls with oacc_declare_create
>       attribute set.
>       (gfc_trans_deallocate): Likewise.
>       * trans.h (gfc_trans_oacc_declare_allocate): Declare.
> 
>       gcc/testsuite/
>       * gfortran.dg/goacc/declare-allocatable-1.f90: New test.
> 
>       include/
>       * gomp-constants.h (enum gomp_map_kind): Define
>       GOMP_MAP_DECLARE_{ALLOCATE,DEALLOCATE} and GOMP_MAP_FLAG_SPECIAL_4.
> 
>       libgomp/
>       * oacc-mem.c (gomp_acc_declare_allocate): New function.
>       * oacc-parallel.c (GOACC_enter_exit_data): Handle
>       GOMP_MAP_DECLARE_{ALLOCATE,DEALLOCATE}.
>       * testsuite/libgomp.oacc-fortran/allocatable-array.f90: New test.
>       * testsuite/libgomp.oacc-fortran/allocatable-scalar.f90: New test.
>       * testsuite/libgomp.oacc-fortran/declare-allocatable-1.f90: New test.
>       * testsuite/libgomp.oacc-fortran/declare-allocatable-2.f90: New test.
>       * testsuite/libgomp.oacc-fortran/declare-allocatable-3.f90: New test.
>       * testsuite/libgomp.oacc-fortran/declare-allocatable-4.f90: New test.

If Thomas is ok with this, it is fine for me.

        Jakub

Reply via email to