[PATCH v5 00/10] OpenMP: Implement metadirective and dynamic selectors
Sandra Loosemore
sloosemore@baylibre.com
Tue Dec 10 04:44:34 GMT 2024
I realized last week that the previous version of this patch series that I
posted on Nov 15:
https://gcc.gnu.org/pipermail/gcc-patches/2024-November/669053.html
collided with Paul-Antoine's "dispatch" construct patches that were
pushed a few days later, and no longer applied cleanly. I've prepared
this new version to fix up the merge conflicts. Only part 2 of the
series has any substantive code changes (mainly in gimplify_omp_dispatch
and gimplify_call_expr), and there is a new testcase added in part 7 to
test the intersection of dynamic selectors and the dispatch construct.
I still hope this functionality can make it into GCC 15.
-Sandra
Sandra Loosemore (10):
OpenMP: New tree nodes for metadirective and dynamic selector support.
OpenMP: Re-work and extend context selector resolution
OpenMP: Remove dead code from declare variant reimplementation
OpenMP: Robustify C front end handling of attribute-syntax pragmas
OpenMP: Add C support for metadirectives and dynamic selectors.
OpenMP: C++ support for metadirectives and dynamic selectors.
OpenMP: Shared metadirective/dynamic selector tests for C and C++
OpenMP: Fortran support for metadirectives and dynamic selectors
OpenMP: Update "declare target"/OpenMP context interaction
OpenMP: Update documentation of metadirective implementation status.
gcc/Makefile.in | 2 +-
gcc/c-family/c-attribs.cc | 2 -
gcc/c-family/c-common.h | 4 +-
gcc/c-family/c-gimplify.cc | 27 +
gcc/c-family/c-omp.cc | 60 +-
gcc/c-family/c-pragma.cc | 1 +
gcc/c-family/c-pragma.h | 1 +
gcc/c/c-decl.cc | 8 +-
gcc/c/c-parser.cc | 537 +++-
gcc/cgraph.cc | 2 -
gcc/cgraph.h | 12 +-
gcc/cgraphclones.cc | 2 +-
gcc/cp/cp-tree.h | 2 +
gcc/cp/decl.cc | 2 +-
gcc/cp/decl2.cc | 9 +-
gcc/cp/parser.cc | 542 +++-
gcc/cp/parser.h | 6 +
gcc/cp/pt.cc | 126 +
gcc/cp/semantics.cc | 3 +-
gcc/doc/generic.texi | 63 +
gcc/fold-const.cc | 2 +
gcc/fortran/decl.cc | 29 +
gcc/fortran/dump-parse-tree.cc | 20 +
gcc/fortran/gfortran.h | 21 +-
gcc/fortran/io.cc | 2 +-
gcc/fortran/match.h | 2 +
gcc/fortran/openmp.cc | 302 ++-
gcc/fortran/parse.cc | 582 +++--
gcc/fortran/parse.h | 8 +-
gcc/fortran/resolve.cc | 6 +
gcc/fortran/st.cc | 4 +
gcc/fortran/symbol.cc | 25 +-
gcc/fortran/trans-decl.cc | 5 +-
gcc/fortran/trans-openmp.cc | 238 +-
gcc/fortran/trans-stmt.h | 1 +
gcc/fortran/trans.cc | 1 +
gcc/gimple-expr.cc | 5 +
gcc/gimple.cc | 4 +-
gcc/gimplify.cc | 657 ++++-
gcc/gimplify.h | 2 +-
gcc/ipa-free-lang-data.cc | 2 +-
gcc/ipa.cc | 3 -
gcc/lto-cgraph.cc | 12 +-
gcc/lto-streamer-out.cc | 3 +-
gcc/lto-streamer.h | 6 -
gcc/lto/lto-partition.cc | 5 +-
gcc/omp-expand.cc | 6 +-
gcc/omp-general.cc | 2203 +++++++++--------
gcc/omp-general.h | 44 +-
gcc/omp-low.cc | 18 +
gcc/omp-offload.cc | 97 +-
gcc/omp-simd-clone.cc | 4 +-
gcc/passes.cc | 3 +-
gcc/symtab.cc | 2 +-
.../c-c++-common/gomp/attrs-metadirective-1.c | 47 +
.../c-c++-common/gomp/attrs-metadirective-2.c | 76 +
.../c-c++-common/gomp/attrs-metadirective-3.c | 24 +
.../c-c++-common/gomp/attrs-metadirective-4.c | 43 +
.../c-c++-common/gomp/attrs-metadirective-5.c | 26 +
.../c-c++-common/gomp/attrs-metadirective-6.c | 33 +
.../c-c++-common/gomp/attrs-metadirective-7.c | 37 +
.../c-c++-common/gomp/attrs-metadirective-8.c | 18 +
.../gomp/declare-target-indirect-2.c | 10 +-
.../c-c++-common/gomp/declare-variant-12.c | 14 +-
.../c-c++-common/gomp/declare-variant-13.c | 6 +-
.../c-c++-common/gomp/declare-variant-14.c | 2 +-
.../c-c++-common/gomp/declare-variant-2.c | 4 +-
.../c-c++-common/gomp/declare-variant-8.c | 4 +-
.../gomp/declare-variant-arg-exprs.c | 29 +
.../gomp/declare-variant-dynamic-1.c | 26 +
.../gomp/declare-variant-dynamic-2.c | 30 +
.../c-c++-common/gomp/metadirective-1.c | 58 +
.../c-c++-common/gomp/metadirective-2.c | 75 +
.../c-c++-common/gomp/metadirective-3.c | 23 +
.../c-c++-common/gomp/metadirective-4.c | 42 +
.../c-c++-common/gomp/metadirective-5.c | 25 +
.../c-c++-common/gomp/metadirective-6.c | 32 +
.../c-c++-common/gomp/metadirective-7.c | 36 +
.../c-c++-common/gomp/metadirective-8.c | 17 +
.../gomp/metadirective-construct.c | 178 ++
.../c-c++-common/gomp/metadirective-device.c | 149 ++
.../gomp/metadirective-no-score.c | 95 +
.../gomp/metadirective-target-device.c | 149 ++
.../c-c++-common/gomp/reverse-offload-1.c | 2 +-
.../g++.dg/gomp/declare-variant-class-1.C | 32 +
.../g++.dg/gomp/declare-variant-class-2.C | 37 +
.../g++.dg/gomp/metadirective-template-1.C | 74 +
gcc/testsuite/gcc.dg/gomp/metadirective-1.c | 15 +
.../gfortran.dg/gomp/declare-variant-12.f90 | 14 +-
.../gfortran.dg/gomp/declare-variant-13.f90 | 25 +-
.../gfortran.dg/gomp/declare-variant-14.f90 | 28 +-
.../gfortran.dg/gomp/declare-variant-8.f90 | 12 +-
.../gfortran.dg/gomp/metadirective-1.f90 | 80 +
.../gfortran.dg/gomp/metadirective-10.f90 | 40 +
.../gfortran.dg/gomp/metadirective-11.f90 | 33 +
.../gfortran.dg/gomp/metadirective-12.f90 | 18 +
.../gfortran.dg/gomp/metadirective-2.f90 | 62 +
.../gfortran.dg/gomp/metadirective-3.f90 | 25 +
.../gfortran.dg/gomp/metadirective-4.f90 | 39 +
.../gfortran.dg/gomp/metadirective-5.f90 | 30 +
.../gfortran.dg/gomp/metadirective-6.f90 | 31 +
.../gfortran.dg/gomp/metadirective-7.f90 | 37 +
.../gfortran.dg/gomp/metadirective-8.f90 | 22 +
.../gfortran.dg/gomp/metadirective-9.f90 | 30 +
.../gomp/metadirective-construct.f90 | 260 ++
.../gomp/metadirective-no-score.f90 | 122 +
gcc/testsuite/gfortran.dg/gomp/pure-1.f90 | 7 +
gcc/testsuite/gfortran.dg/gomp/pure-2.f90 | 8 -
gcc/tree-cfg.cc | 1 +
gcc/tree-inline.cc | 15 +-
gcc/tree-pretty-print.cc | 81 +
gcc/tree-ssa-operands.cc | 4 +
gcc/tree.def | 34 +
gcc/tree.h | 22 +
libgomp/libgomp.texi | 21 +-
.../libgomp.c++/metadirective-template-1.C | 39 +
.../libgomp.c++/metadirective-template-2.C | 43 +
.../libgomp.c++/metadirective-template-3.C | 43 +
.../libgomp.c-c++-common/dispatch-3.c | 100 +
.../libgomp.c-c++-common/metadirective-1.c | 37 +
.../libgomp.c-c++-common/metadirective-2.c | 43 +
.../libgomp.c-c++-common/metadirective-3.c | 36 +
.../libgomp.c-c++-common/metadirective-4.c | 54 +
.../libgomp.c-c++-common/metadirective-5.c | 48 +
.../metadirective-late-1.c | 66 +
.../metadirective-late-2.c | 66 +
.../metadirective-target-device.c | 76 +
.../libgomp.fortran/metadirective-1.f90 | 61 +
.../libgomp.fortran/metadirective-2.f90 | 40 +
.../libgomp.fortran/metadirective-3.f90 | 29 +
.../libgomp.fortran/metadirective-4.f90 | 46 +
.../libgomp.fortran/metadirective-5.f90 | 44 +
.../libgomp.fortran/metadirective-6.f90 | 58 +
133 files changed, 7560 insertions(+), 1673 deletions(-)
create mode 100644 gcc/testsuite/c-c++-common/gomp/attrs-metadirective-1.c
create mode 100644 gcc/testsuite/c-c++-common/gomp/attrs-metadirective-2.c
create mode 100644 gcc/testsuite/c-c++-common/gomp/attrs-metadirective-3.c
create mode 100644 gcc/testsuite/c-c++-common/gomp/attrs-metadirective-4.c
create mode 100644 gcc/testsuite/c-c++-common/gomp/attrs-metadirective-5.c
create mode 100644 gcc/testsuite/c-c++-common/gomp/attrs-metadirective-6.c
create mode 100644 gcc/testsuite/c-c++-common/gomp/attrs-metadirective-7.c
create mode 100644 gcc/testsuite/c-c++-common/gomp/attrs-metadirective-8.c
create mode 100644 gcc/testsuite/c-c++-common/gomp/declare-variant-arg-exprs.c
create mode 100644 gcc/testsuite/c-c++-common/gomp/declare-variant-dynamic-1.c
create mode 100644 gcc/testsuite/c-c++-common/gomp/declare-variant-dynamic-2.c
create mode 100644 gcc/testsuite/c-c++-common/gomp/metadirective-1.c
create mode 100644 gcc/testsuite/c-c++-common/gomp/metadirective-2.c
create mode 100644 gcc/testsuite/c-c++-common/gomp/metadirective-3.c
create mode 100644 gcc/testsuite/c-c++-common/gomp/metadirective-4.c
create mode 100644 gcc/testsuite/c-c++-common/gomp/metadirective-5.c
create mode 100644 gcc/testsuite/c-c++-common/gomp/metadirective-6.c
create mode 100644 gcc/testsuite/c-c++-common/gomp/metadirective-7.c
create mode 100644 gcc/testsuite/c-c++-common/gomp/metadirective-8.c
create mode 100644 gcc/testsuite/c-c++-common/gomp/metadirective-construct.c
create mode 100644 gcc/testsuite/c-c++-common/gomp/metadirective-device.c
create mode 100644 gcc/testsuite/c-c++-common/gomp/metadirective-no-score.c
create mode 100644 gcc/testsuite/c-c++-common/gomp/metadirective-target-device.c
create mode 100644 gcc/testsuite/g++.dg/gomp/declare-variant-class-1.C
create mode 100644 gcc/testsuite/g++.dg/gomp/declare-variant-class-2.C
create mode 100644 gcc/testsuite/g++.dg/gomp/metadirective-template-1.C
create mode 100644 gcc/testsuite/gcc.dg/gomp/metadirective-1.c
create mode 100644 gcc/testsuite/gfortran.dg/gomp/metadirective-1.f90
create mode 100644 gcc/testsuite/gfortran.dg/gomp/metadirective-10.f90
create mode 100644 gcc/testsuite/gfortran.dg/gomp/metadirective-11.f90
create mode 100644 gcc/testsuite/gfortran.dg/gomp/metadirective-12.f90
create mode 100644 gcc/testsuite/gfortran.dg/gomp/metadirective-2.f90
create mode 100644 gcc/testsuite/gfortran.dg/gomp/metadirective-3.f90
create mode 100644 gcc/testsuite/gfortran.dg/gomp/metadirective-4.f90
create mode 100644 gcc/testsuite/gfortran.dg/gomp/metadirective-5.f90
create mode 100644 gcc/testsuite/gfortran.dg/gomp/metadirective-6.f90
create mode 100644 gcc/testsuite/gfortran.dg/gomp/metadirective-7.f90
create mode 100644 gcc/testsuite/gfortran.dg/gomp/metadirective-8.f90
create mode 100644 gcc/testsuite/gfortran.dg/gomp/metadirective-9.f90
create mode 100644 gcc/testsuite/gfortran.dg/gomp/metadirective-construct.f90
create mode 100644 gcc/testsuite/gfortran.dg/gomp/metadirective-no-score.f90
create mode 100644 libgomp/testsuite/libgomp.c++/metadirective-template-1.C
create mode 100644 libgomp/testsuite/libgomp.c++/metadirective-template-2.C
create mode 100644 libgomp/testsuite/libgomp.c++/metadirective-template-3.C
create mode 100644 libgomp/testsuite/libgomp.c-c++-common/dispatch-3.c
create mode 100644 libgomp/testsuite/libgomp.c-c++-common/metadirective-1.c
create mode 100644 libgomp/testsuite/libgomp.c-c++-common/metadirective-2.c
create mode 100644 libgomp/testsuite/libgomp.c-c++-common/metadirective-3.c
create mode 100644 libgomp/testsuite/libgomp.c-c++-common/metadirective-4.c
create mode 100644 libgomp/testsuite/libgomp.c-c++-common/metadirective-5.c
create mode 100644 libgomp/testsuite/libgomp.c-c++-common/metadirective-late-1.c
create mode 100644 libgomp/testsuite/libgomp.c-c++-common/metadirective-late-2.c
create mode 100644 libgomp/testsuite/libgomp.c-c++-common/metadirective-target-device.c
create mode 100644 libgomp/testsuite/libgomp.fortran/metadirective-1.f90
create mode 100644 libgomp/testsuite/libgomp.fortran/metadirective-2.f90
create mode 100644 libgomp/testsuite/libgomp.fortran/metadirective-3.f90
create mode 100644 libgomp/testsuite/libgomp.fortran/metadirective-4.f90
create mode 100644 libgomp/testsuite/libgomp.fortran/metadirective-5.f90
create mode 100644 libgomp/testsuite/libgomp.fortran/metadirective-6.f90
--
2.25.1
More information about the Gcc-patches
mailing list