On Wed, Feb 02, 2022 at 09:19:03AM +0100, Marcel Vollweiler wrote:
> gcc/c-family/ChangeLog:
>
> * c-omp.cc (c_omp_split_clauses): Added OMP_CLAUSE_HAS_DEVICE_ADDR case.
> * c-pragma.h (enum pragma_kind): Added 5.1 in comment.
> (enum pragma_omp_clause): Added PRAGMA_OMP_CLAUSE_HAS_DEVICE_ADDR.
>
> gcc/c/ChangeLog:
>
> * c-parser.cc (c_parser_omp_clause_name): Parse 'has_device_addr'
> clause.
> (c_parser_omp_variable_list): Handle array sections.
> (c_parser_omp_clause_has_device_addr): Added.
> (c_parser_omp_all_clauses): Added PRAGMA_OMP_CLAUSE_HAS_DEVICE_ADDR
> case.
> (c_parser_omp_target_exit_data): Added HAS_DEVICE_ADDR to
> OMP_CLAUSE_MASK.
> * c-typeck.cc (handle_omp_array_sections): Handle clause restrictions.
> (c_finish_omp_clauses): Handle array sections.
>
> gcc/cp/ChangeLog:
>
> * parser.cc (cp_parser_omp_clause_name): Parse 'has_device_addr' clause.
> (cp_parser_omp_var_list_no_open): Handle array sections.
> (cp_parser_omp_all_clauses): Added PRAGMA_OMP_CLAUSE_HAS_DEVICE_ADDR
> case.
> (cp_parser_omp_target_update): Added HAS_DEVICE_ADDR to OMP_CLAUSE_MASK.
> * pt.c (tsubst_omp_clauses): Added cases for OMP_CLAUSE_HAS_DEVICE_ADDR.
> * semantics.cc (handle_omp_array_sections): Handle clause restrictions.
> (finish_omp_clauses): Handle array sections.
>
> gcc/fortran/ChangeLog:
>
> * dump-parse-tree.cc (show_omp_clauses): Added OMP_LIST_HAS_DEVICE_ADDR
> case.
> * gfortran.h: Added OMP_LIST_HAS_DEVICE_ADDR.
> * openmp.cc (enum omp_mask2): Added OMP_CLAUSE_HAS_DEVICE_ADDR.
> (gfc_match_omp_clauses): Parse HAS_DEVICE_ADDR clause.
> (resolve_omp_clauses): Same.
> * trans-openmp.cc (gfc_trans_omp_variable_list): Added
> OMP_LIST_HAS_DEVICE_ADDR case.
> (gfc_trans_omp_clauses): Firstprivatize of array descriptors.
>
> gcc/ChangeLog:
>
> * gimplify.cc (gimplify_scan_omp_clauses): Added cases for
> OMP_CLAUSE_HAS_DEVICE_ADDR
> and handle array sections.
> (gimplify_adjust_omp_clauses): Added OMP_CLAUSE_HAS_DEVICE_ADDR case.
> * omp-low.cc (scan_sharing_clauses): Handle OMP_CLAUSE_HAS_DEVICE_ADDR.
> (lower_omp_target): Same.
> * tree-core.h (enum omp_clause_code): Same.
> * tree-nested.cc (convert_nonlocal_omp_clauses): Same.
> (convert_local_omp_clauses): Same.
> * tree-pretty-print.cc (dump_omp_clause): Same.
> * tree.cc: Same.
>
> libgomp/ChangeLog:
>
> * libgomp.texi: Updated entry for HAS_DEVICE_ADDR.
> * target.c (copy_firstprivate_data): Copy only if host address is not
> NULL.
> * testsuite/libgomp.c++/target-has-device-addr-2.C: New test.
> * testsuite/libgomp.c++/target-has-device-addr-4.C: New test.
> * testsuite/libgomp.c++/target-has-device-addr-5.C: New test.
> * testsuite/libgomp.c++/target-has-device-addr-6.C: New test.
> * testsuite/libgomp.c-c++-common/target-has-device-addr-1.c: New test.
> * testsuite/libgomp.c/target-has-device-addr-3.c: New test.
> * testsuite/libgomp.fortran/target-has-device-addr-1.f90: New test.
> * testsuite/libgomp.fortran/target-has-device-addr-2.f90: New test.
> * testsuite/libgomp.fortran/target-has-device-addr-3.f90: New test.
> * testsuite/libgomp.fortran/target-has-device-addr-4.f90: New test.
>
> gcc/testsuite/ChangeLog:
>
> * c-c++-common/gomp/clauses-1.c: Added has_device_addr to test cases.
> * g++.dg/gomp/attrs-1.C: Added has_device_addr to test cases.
> * g++.dg/gomp/attrs-2.C: Added has_device_addr to test cases.
> * c-c++-common/gomp/target-has-device-addr-1.c: New test.
> * c-c++-common/gomp/target-has-device-addr-2.c: New test.
> * c-c++-common/gomp/target-is-device-ptr-1.c: New test.
> * c-c++-common/gomp/target-is-device-ptr-2.c: New test.
> * gfortran.dg/gomp/is_device_ptr-3.f90: New test.
> * gfortran.dg/gomp/target-has-device-addr-1.f90: New test.
> * gfortran.dg/gomp/target-has-device-addr-2.f90: New test.
Ok, thanks.
Jakub