[PATCH v2 00/11] OpenMP 5.0: C & C++ "declare mapper" support (plus struct rework, etc.)
Julian Brown
julian@codesourcery.com
Fri Mar 18 16:24:50 GMT 2022
Hi Jakub,
This is a new version of the series posted here:
https://gcc.gnu.org/pipermail/gcc-patches/2022-February/590582.html
Again, this isn't for committing now (it's definitely stage 1 material)
but I'm posting now for comments on the general approach (to any of the
contained parts) and to avoid duplicating effort, etc..
Relative to the previously-posted version, this version of the series
makes changes to the "address inspector" code and its call sites in order
to hopefully clarify the logic used to create pointer mapping nodes and
so forth, and implements "declare mapper" support for C as well as C++.
Further commentary on individual patches. This version of the series has
been tested (offloading to NVPTX) as a whole, for now.
Thanks,
Julian
Julian Brown (11):
OpenMP 5.0: Clause ordering for OpenMP 5.0 (topological sorting by
base pointer)
Remove omp_target_reorder_clauses
OpenMP/OpenACC struct sibling list gimplification extension and rework
OpenMP/OpenACC: Add inspector class to unify mapped address analysis
OpenMP: Handle reference-typed struct members
OpenMP: lvalue parsing for map clauses (C++)
OpenMP: lvalue parsing for map clauses (C)
Use OMP_ARRAY_SECTION instead of TREE_LIST in C++ FE
OpenMP 5.0 "declare mapper" support for C++
OpenMP: Use OMP_ARRAY_SECTION instead of TREE_LIST for array sections
in C FE
OpenMP: Support OpenMP 5.0 "declare mapper" directives for C
gcc/c-family/c-common.h | 58 +
gcc/c-family/c-omp.cc | 583 ++++
gcc/c/c-decl.cc | 169 +
gcc/c/c-objc-common.h | 12 +
gcc/c/c-parser.cc | 463 ++-
gcc/c/c-tree.h | 9 +
gcc/c/c-typeck.cc | 392 +--
gcc/cp/cp-gimplify.cc | 6 +
gcc/cp/cp-objcp-common.h | 9 +
gcc/cp/cp-tree.h | 13 +
gcc/cp/decl.cc | 18 +-
gcc/cp/error.cc | 9 +
gcc/cp/mangle.cc | 5 +-
gcc/cp/name-lookup.cc | 3 +-
gcc/cp/parser.cc | 543 ++-
gcc/cp/parser.h | 3 +
gcc/cp/pt.cc | 144 +-
gcc/cp/semantics.cc | 728 +++--
gcc/fortran/parse.cc | 3 +
gcc/fortran/trans-openmp.cc | 20 +-
gcc/gimplify.cc | 2905 ++++++++++++-----
gcc/langhooks-def.h | 13 +
gcc/langhooks.cc | 35 +
gcc/langhooks.h | 16 +
gcc/omp-general.h | 84 +
gcc/omp-low.cc | 23 +-
.../c-c++-common/gomp/declare-mapper-12.c | 22 +
.../c-c++-common/gomp/declare-mapper-3.c | 30 +
.../c-c++-common/gomp/declare-mapper-4.c | 78 +
.../c-c++-common/gomp/declare-mapper-5.c | 26 +
.../c-c++-common/gomp/declare-mapper-6.c | 24 +
.../c-c++-common/gomp/declare-mapper-7.c | 30 +
.../c-c++-common/gomp/declare-mapper-8.c | 43 +
.../c-c++-common/gomp/declare-mapper-9.c | 34 +
gcc/testsuite/c-c++-common/gomp/map-1.c | 3 +-
gcc/testsuite/c-c++-common/gomp/map-6.c | 12 +-
gcc/testsuite/g++.dg/goacc/member-array-acc.C | 13 +
gcc/testsuite/g++.dg/gomp/declare-mapper-1.C | 58 +
gcc/testsuite/g++.dg/gomp/declare-mapper-2.C | 30 +
gcc/testsuite/g++.dg/gomp/ind-base-3.C | 38 +
gcc/testsuite/g++.dg/gomp/map-assignment-1.C | 12 +
gcc/testsuite/g++.dg/gomp/map-inc-1.C | 10 +
gcc/testsuite/g++.dg/gomp/map-lvalue-ref-1.C | 19 +
gcc/testsuite/g++.dg/gomp/map-ptrmem-1.C | 37 +
gcc/testsuite/g++.dg/gomp/map-ptrmem-2.C | 40 +
.../g++.dg/gomp/map-static-cast-lvalue-1.C | 17 +
gcc/testsuite/g++.dg/gomp/map-ternary-1.C | 20 +
gcc/testsuite/g++.dg/gomp/member-array-2.C | 92 +
gcc/testsuite/g++.dg/gomp/member-array-omp.C | 13 +
gcc/testsuite/g++.dg/gomp/pr67522.C | 2 +-
gcc/testsuite/g++.dg/gomp/target-3.C | 4 +-
gcc/testsuite/g++.dg/gomp/target-lambda-1.C | 6 +-
gcc/testsuite/g++.dg/gomp/target-this-2.C | 2 +-
gcc/testsuite/g++.dg/gomp/target-this-3.C | 4 +-
gcc/testsuite/g++.dg/gomp/target-this-4.C | 4 +-
.../g++.dg/gomp/unmappable-component-1.C | 21 +
gcc/testsuite/gcc.dg/gomp/declare-mapper-10.c | 61 +
gcc/testsuite/gcc.dg/gomp/declare-mapper-11.c | 33 +
gcc/tree-core.h | 4 +
gcc/tree-pretty-print.cc | 56 +
gcc/tree.cc | 2 +
gcc/tree.def | 10 +
gcc/tree.h | 21 +
include/gomp-constants.h | 8 +-
libgomp/testsuite/libgomp.c++/baseptrs-3.C | 275 ++
libgomp/testsuite/libgomp.c++/class-array-1.C | 59 +
.../testsuite/libgomp.c++/declare-mapper-1.C | 87 +
.../testsuite/libgomp.c++/declare-mapper-2.C | 55 +
.../testsuite/libgomp.c++/declare-mapper-3.C | 63 +
.../testsuite/libgomp.c++/declare-mapper-4.C | 63 +
.../testsuite/libgomp.c++/declare-mapper-5.C | 52 +
.../testsuite/libgomp.c++/declare-mapper-6.C | 37 +
.../testsuite/libgomp.c++/declare-mapper-7.C | 48 +
.../testsuite/libgomp.c++/declare-mapper-8.C | 61 +
libgomp/testsuite/libgomp.c++/ind-base-1.C | 162 +
libgomp/testsuite/libgomp.c++/ind-base-2.C | 49 +
libgomp/testsuite/libgomp.c++/map-comma-1.C | 15 +
.../testsuite/libgomp.c++/map-rvalue-ref-1.C | 22 +
libgomp/testsuite/libgomp.c++/struct-ref-1.C | 97 +
.../libgomp.c-c++-common/array-field-1.c | 35 +
.../libgomp.c-c++-common/array-of-struct-1.c | 65 +
.../libgomp.c-c++-common/array-of-struct-2.c | 65 +
.../libgomp.c-c++-common/baseptrs-1.c | 50 +
.../libgomp.c-c++-common/baseptrs-2.c | 70 +
.../libgomp.c-c++-common/declare-mapper-10.c | 58 +
.../libgomp.c-c++-common/declare-mapper-11.c | 57 +
.../libgomp.c-c++-common/declare-mapper-12.c | 85 +
.../libgomp.c-c++-common/declare-mapper-13.c | 55 +
.../libgomp.c-c++-common/declare-mapper-14.c | 57 +
.../libgomp.c-c++-common/declare-mapper-9.c | 60 +
.../libgomp.c-c++-common/ind-base-4.c | 50 +
.../libgomp.c-c++-common/unary-ptr-1.c | 16 +
.../testsuite/libgomp.oacc-c++/deep-copy-17.C | 101 +
.../libgomp.oacc-c-c++-common/deep-copy-15.c | 68 +
.../libgomp.oacc-c-c++-common/deep-copy-16.c | 231 ++
.../deep-copy-arrayofstruct.c | 2 +-
96 files changed, 8053 insertions(+), 1422 deletions(-)
create mode 100644 gcc/testsuite/c-c++-common/gomp/declare-mapper-12.c
create mode 100644 gcc/testsuite/c-c++-common/gomp/declare-mapper-3.c
create mode 100644 gcc/testsuite/c-c++-common/gomp/declare-mapper-4.c
create mode 100644 gcc/testsuite/c-c++-common/gomp/declare-mapper-5.c
create mode 100644 gcc/testsuite/c-c++-common/gomp/declare-mapper-6.c
create mode 100644 gcc/testsuite/c-c++-common/gomp/declare-mapper-7.c
create mode 100644 gcc/testsuite/c-c++-common/gomp/declare-mapper-8.c
create mode 100644 gcc/testsuite/c-c++-common/gomp/declare-mapper-9.c
create mode 100644 gcc/testsuite/g++.dg/goacc/member-array-acc.C
create mode 100644 gcc/testsuite/g++.dg/gomp/declare-mapper-1.C
create mode 100644 gcc/testsuite/g++.dg/gomp/declare-mapper-2.C
create mode 100644 gcc/testsuite/g++.dg/gomp/ind-base-3.C
create mode 100644 gcc/testsuite/g++.dg/gomp/map-assignment-1.C
create mode 100644 gcc/testsuite/g++.dg/gomp/map-inc-1.C
create mode 100644 gcc/testsuite/g++.dg/gomp/map-lvalue-ref-1.C
create mode 100644 gcc/testsuite/g++.dg/gomp/map-ptrmem-1.C
create mode 100644 gcc/testsuite/g++.dg/gomp/map-ptrmem-2.C
create mode 100644 gcc/testsuite/g++.dg/gomp/map-static-cast-lvalue-1.C
create mode 100644 gcc/testsuite/g++.dg/gomp/map-ternary-1.C
create mode 100644 gcc/testsuite/g++.dg/gomp/member-array-2.C
create mode 100644 gcc/testsuite/g++.dg/gomp/member-array-omp.C
create mode 100644 gcc/testsuite/g++.dg/gomp/unmappable-component-1.C
create mode 100644 gcc/testsuite/gcc.dg/gomp/declare-mapper-10.c
create mode 100644 gcc/testsuite/gcc.dg/gomp/declare-mapper-11.c
create mode 100644 libgomp/testsuite/libgomp.c++/baseptrs-3.C
create mode 100644 libgomp/testsuite/libgomp.c++/class-array-1.C
create mode 100644 libgomp/testsuite/libgomp.c++/declare-mapper-1.C
create mode 100644 libgomp/testsuite/libgomp.c++/declare-mapper-2.C
create mode 100644 libgomp/testsuite/libgomp.c++/declare-mapper-3.C
create mode 100644 libgomp/testsuite/libgomp.c++/declare-mapper-4.C
create mode 100644 libgomp/testsuite/libgomp.c++/declare-mapper-5.C
create mode 100644 libgomp/testsuite/libgomp.c++/declare-mapper-6.C
create mode 100644 libgomp/testsuite/libgomp.c++/declare-mapper-7.C
create mode 100644 libgomp/testsuite/libgomp.c++/declare-mapper-8.C
create mode 100644 libgomp/testsuite/libgomp.c++/ind-base-1.C
create mode 100644 libgomp/testsuite/libgomp.c++/ind-base-2.C
create mode 100644 libgomp/testsuite/libgomp.c++/map-comma-1.C
create mode 100644 libgomp/testsuite/libgomp.c++/map-rvalue-ref-1.C
create mode 100644 libgomp/testsuite/libgomp.c++/struct-ref-1.C
create mode 100644 libgomp/testsuite/libgomp.c-c++-common/array-field-1.c
create mode 100644 libgomp/testsuite/libgomp.c-c++-common/array-of-struct-1.c
create mode 100644 libgomp/testsuite/libgomp.c-c++-common/array-of-struct-2.c
create mode 100644 libgomp/testsuite/libgomp.c-c++-common/baseptrs-1.c
create mode 100644 libgomp/testsuite/libgomp.c-c++-common/baseptrs-2.c
create mode 100644 libgomp/testsuite/libgomp.c-c++-common/declare-mapper-10.c
create mode 100644 libgomp/testsuite/libgomp.c-c++-common/declare-mapper-11.c
create mode 100644 libgomp/testsuite/libgomp.c-c++-common/declare-mapper-12.c
create mode 100644 libgomp/testsuite/libgomp.c-c++-common/declare-mapper-13.c
create mode 100644 libgomp/testsuite/libgomp.c-c++-common/declare-mapper-14.c
create mode 100644 libgomp/testsuite/libgomp.c-c++-common/declare-mapper-9.c
create mode 100644 libgomp/testsuite/libgomp.c-c++-common/ind-base-4.c
create mode 100644 libgomp/testsuite/libgomp.c-c++-common/unary-ptr-1.c
create mode 100644 libgomp/testsuite/libgomp.oacc-c++/deep-copy-17.C
create mode 100644 libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-15.c
create mode 100644 libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-16.c
rename {gcc/testsuite/c-c++-common/goacc => libgomp/testsuite/libgomp.oacc-c-c++-common}/deep-copy-arrayofstruct.c (98%)
--
2.29.2
More information about the Gcc-patches
mailing list