From: Sandra Loosemore <sloosemore@baylibre.com>
To: gcc-patches@gcc.gnu.org
Cc: jakub@redhat.com, tburnus@baylibre.com
Subject: [PATCH v3 00/12] Metadirective support + "declare variant" improvements
Date: Sat, 20 Jul 2024 14:42:19 -0600 [thread overview]
Message-ID: <20240720204231.2229891-1-sloosemore@baylibre.com> (raw)
This is a revised version of the patch set I last posted in late May:
https://gcc.gnu.org/pipermail/gcc-patches/2024-May/653066.html
Aside from rebasing the patch set so it applies cleanly to mainline
head again, I incorporated a few small code cleanups and testsuite
fixes I'd collected, plus a few more substantive improvements:
- I changed the metadirective pretty-printers to use "otherwise"
instead of the now-deprecated "default" clause, as Tobias suggested
in his review of the previous version of part 1, and made
corresponding tweaks to the test cases that were examining the dump
output.
- I also re-did the device_num support for the target_device selector
along the lines suggested by Tobias (simplifying the libgomp support
and adding a conditional to the generated code), and added a new
testcase for that.
- When I was working on something else I observed that the C front end
now has support for attribute-syntax directives; when I originally
implemented that for metadirectives on the OG13 branch about a year
ago, only C++ had general support for attribute syntax. My C++
testcases failed to "just work" in C because the lookahead
save/restore mechanism for attribute directives collided with the
token caching used by metadirective for parsing the body. So I
fixed that, now the testcases work in both languages.
Also note the lists of improvements and bug fixes for previous
versions of the patch set, which I won't duplicate here.
I realize this is a large and complicated patch set with many
dependencies between the pieces (and I have another layer on top of
this in the works to support "begin declare variant"). If the
maintainers would find it easier to review if I refactored the pieces
in some other way, please let me know what would help to expedite the
process. I'd really like to get these patches in somehow or another,
so I don't have to continue to spend so much time maintaining them out
of tree. :-S
-Sandra
Sandra Loosemore (12):
OpenMP: metadirective tree data structures and front-end interfaces
OpenMP: middle-end support for metadirectives
libgomp: runtime support for target_device selector
OpenMP: C front end support for metadirectives
OpenMP: C++ front-end support for metadirectives
OpenMP: common c/c++ testcases for metadirectives
OpenMP: Fortran front-end support for metadirectives.
OpenMP: Reject other properties with kind(any)
OpenMP: Extend dynamic selector support to declare variant
OpenMP: Remove dead code from declare variant reimplementation
OpenMP: Update "declare target"/OpenMP context interaction
OpenMP: Update documentation of metadirective implementation status.
gcc/Makefile.in | 2 +-
gcc/builtin-types.def | 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 | 508 +++-
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 | 526 ++++-
gcc/cp/parser.h | 7 +
gcc/cp/pt.cc | 120 +
gcc/cp/semantics.cc | 3 +-
gcc/doc/generic.texi | 32 +
gcc/doc/gimple.texi | 6 +
gcc/fortran/decl.cc | 29 +
gcc/fortran/dump-parse-tree.cc | 21 +
gcc/fortran/gfortran.h | 21 +-
gcc/fortran/io.cc | 2 +-
gcc/fortran/match.h | 2 +
gcc/fortran/openmp.cc | 294 ++-
gcc/fortran/parse.cc | 578 +++--
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/fortran/types.def | 2 +
gcc/gimple-low.cc | 36 +
gcc/gimple-pretty-print.cc | 78 +
gcc/gimple-streamer-in.cc | 13 +
gcc/gimple-streamer-out.cc | 10 +
gcc/gimple-walk.cc | 28 +
gcc/gimple.cc | 36 +
gcc/gimple.def | 8 +
gcc/gimple.h | 122 +-
gcc/gimplify.cc | 574 +++--
gcc/gimplify.h | 2 +-
gcc/gsstruct.def | 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-builtins.def | 3 +
gcc/omp-expand.cc | 32 +-
gcc/omp-general.cc | 2043 +++++++++--------
gcc/omp-general.h | 50 +-
gcc/omp-low.cc | 83 +
gcc/omp-offload.cc | 117 +-
gcc/omp-simd-clone.cc | 3 +-
gcc/passes.cc | 3 +-
gcc/symtab.cc | 2 +-
.../c-c++-common/gomp/attrs-metadirective-1.c | 41 +
.../c-c++-common/gomp/attrs-metadirective-2.c | 75 +
.../c-c++-common/gomp/attrs-metadirective-3.c | 23 +
.../c-c++-common/gomp/attrs-metadirective-4.c | 41 +
.../c-c++-common/gomp/attrs-metadirective-5.c | 25 +
.../c-c++-common/gomp/attrs-metadirective-6.c | 32 +
.../c-c++-common/gomp/attrs-metadirective-7.c | 32 +
.../c-c++-common/gomp/attrs-metadirective-8.c | 17 +
.../gomp/declare-target-indirect-2.c | 10 +-
.../c-c++-common/gomp/declare-variant-10.c | 4 +-
.../c-c++-common/gomp/declare-variant-12.c | 14 +-
.../c-c++-common/gomp/declare-variant-13.c | 6 +-
.../c-c++-common/gomp/declare-variant-2.c | 4 +-
.../c-c++-common/gomp/declare-variant-3.c | 10 +-
.../c-c++-common/gomp/declare-variant-8.c | 4 +-
.../c-c++-common/gomp/declare-variant-9.c | 4 +-
.../c-c++-common/gomp/declare-variant-any.c | 10 +
.../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 | 52 +
.../c-c++-common/gomp/metadirective-2.c | 74 +
.../c-c++-common/gomp/metadirective-3.c | 22 +
.../c-c++-common/gomp/metadirective-4.c | 40 +
.../c-c++-common/gomp/metadirective-5.c | 24 +
.../c-c++-common/gomp/metadirective-6.c | 31 +
.../c-c++-common/gomp/metadirective-7.c | 31 +
.../c-c++-common/gomp/metadirective-8.c | 16 +
.../gomp/metadirective-construct.c | 177 ++
.../c-c++-common/gomp/metadirective-device.c | 147 ++
.../gomp/metadirective-no-score.c | 95 +
.../gomp/metadirective-target-device.c | 147 ++
.../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 +
gcc/testsuite/gcc.dg/gomp/metadirective-1.c | 15 +
.../gfortran.dg/gomp/declare-variant-10.f90 | 4 +-
.../gfortran.dg/gomp/declare-variant-12.f90 | 14 +-
.../gfortran.dg/gomp/declare-variant-13.f90 | 28 +-
.../gfortran.dg/gomp/declare-variant-3.f90 | 12 +-
.../gfortran.dg/gomp/declare-variant-8.f90 | 12 +-
.../gfortran.dg/gomp/declare-variant-9.f90 | 2 +-
.../gfortran.dg/gomp/declare-variant-any.f90 | 28 +
.../gfortran.dg/gomp/metadirective-1.f90 | 73 +
.../gfortran.dg/gomp/metadirective-10.f90 | 40 +
.../gfortran.dg/gomp/metadirective-11.f90 | 33 +
.../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 | 36 +
.../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 | 24 +
gcc/tree-inline.cc | 45 +-
gcc/tree-nested.cc | 43 +
gcc/tree-pretty-print.cc | 36 +-
gcc/tree-pretty-print.h | 2 +
gcc/tree-ssa-operands.cc | 17 +
gcc/tree.def | 6 +
gcc/tree.h | 3 +
include/cuda/cuda.h | 2 +
libgomp/Makefile.am | 2 +-
libgomp/Makefile.in | 5 +-
libgomp/config/gcn/selector.c | 102 +
libgomp/config/linux/selector.c | 65 +
libgomp/config/linux/x86/selector.c | 406 ++++
libgomp/config/nvptx/selector.c | 77 +
libgomp/libgomp-plugin.h | 2 +
libgomp/libgomp.h | 1 +
libgomp/libgomp.map | 5 +
libgomp/libgomp.texi | 39 +-
libgomp/libgomp_g.h | 8 +
libgomp/oacc-host.c | 11 +
libgomp/plugin/plugin-gcn.c | 52 +
libgomp/plugin/plugin-nvptx.c | 82 +
libgomp/selector.c | 64 +
libgomp/target.c | 22 +
.../libgomp.c++/metadirective-template-1.C | 37 +
.../libgomp.c++/metadirective-template-2.C | 41 +
.../libgomp.c++/metadirective-template-3.C | 41 +
.../libgomp.c-c++-common/metadirective-1.c | 35 +
.../libgomp.c-c++-common/metadirective-2.c | 41 +
.../libgomp.c-c++-common/metadirective-3.c | 34 +
.../libgomp.c-c++-common/metadirective-4.c | 52 +
.../libgomp.c-c++-common/metadirective-5.c | 46 +
.../metadirective-target-device.c | 63 +
.../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 +
162 files changed, 8273 insertions(+), 1664 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-any.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/gcc.dg/gomp/metadirective-1.c
create mode 100644 gcc/testsuite/gfortran.dg/gomp/declare-variant-any.f90
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-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/config/gcn/selector.c
create mode 100644 libgomp/config/linux/selector.c
create mode 100644 libgomp/config/linux/x86/selector.c
create mode 100644 libgomp/config/nvptx/selector.c
create mode 100644 libgomp/selector.c
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/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-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
next reply other threads:[~2024-07-20 20:42 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-20 20:42 Sandra Loosemore [this message]
2024-07-20 20:42 ` [PATCH v3 01/12] OpenMP: metadirective tree data structures and front-end interfaces Sandra Loosemore
2024-07-25 14:00 ` Tobias Burnus
2024-07-25 19:13 ` Sandra Loosemore
2024-08-09 16:42 ` Jakub Jelinek
2024-08-19 19:12 ` Sandra Loosemore
2024-07-20 20:42 ` [PATCH v3 02/12] OpenMP: middle-end support for metadirectives Sandra Loosemore
2024-08-09 17:12 ` Jakub Jelinek
2024-08-10 7:18 ` Jakub Jelinek
2024-08-10 8:02 ` Jakub Jelinek
2024-08-21 0:36 ` Sandra Loosemore
2024-07-20 20:42 ` [PATCH v3 03/12] libgomp: runtime support for target_device selector Sandra Loosemore
2024-08-14 10:25 ` Jakub Jelinek
2024-08-14 11:01 ` Jakub Jelinek
2024-09-09 10:46 ` Tobias Burnus
2024-09-22 1:00 ` Sandra Loosemore
2024-09-22 5:37 ` Tobias Burnus
2024-07-20 20:42 ` [PATCH v3 04/12] OpenMP: C front end support for metadirectives Sandra Loosemore
2024-08-16 10:30 ` Jakub Jelinek
2024-08-31 22:33 ` Sandra Loosemore
2024-07-20 20:42 ` [PATCH v3 05/12] OpenMP: C++ front-end " Sandra Loosemore
2024-08-16 11:15 ` Jakub Jelinek
2024-07-20 20:42 ` [PATCH v3 06/12] OpenMP: common c/c++ testcases " Sandra Loosemore
2024-08-16 11:29 ` Jakub Jelinek
2024-07-20 20:42 ` [PATCH v3 07/12] OpenMP: Fortran front-end support " Sandra Loosemore
2024-08-16 12:25 ` Jakub Jelinek
2024-07-20 20:42 ` [PATCH v3 08/12] OpenMP: Reject other properties with kind(any) Sandra Loosemore
2024-08-16 12:58 ` Jakub Jelinek
2024-09-08 15:15 ` Sandra Loosemore
2024-09-09 11:01 ` Jakub Jelinek
2024-09-09 20:55 ` Sandra Loosemore
2024-09-09 21:10 ` Jakub Jelinek
2024-09-18 20:50 ` Sandra Loosemore
2024-09-20 7:41 ` Jakub Jelinek
2024-09-22 2:08 ` Sandra Loosemore
2024-09-22 4:52 ` Jakub Jelinek
2024-09-22 14:45 ` Sandra Loosemore
2024-09-23 7:23 ` Jakub Jelinek
2024-07-20 20:42 ` [PATCH v3 09/12] OpenMP: Extend dynamic selector support to declare variant Sandra Loosemore
2024-07-20 20:42 ` [PATCH v3 10/12] OpenMP: Remove dead code from declare variant reimplementation Sandra Loosemore
2024-07-20 20:42 ` [PATCH v3 11/12] OpenMP: Update "declare target"/OpenMP context interaction Sandra Loosemore
2024-07-20 20:42 ` [PATCH v3 12/12] OpenMP: Update documentation of metadirective implementation status Sandra Loosemore
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240720204231.2229891-1-sloosemore@baylibre.com \
--to=sloosemore@baylibre.com \
--cc=gcc-patches@gcc.gnu.org \
--cc=jakub@redhat.com \
--cc=tburnus@baylibre.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).