public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCH v2 00/12] OpenMP: Metadirective support + "declare variant" improvements
@ 2024-05-29 19:04 Sandra Loosemore
  2024-05-29 19:04 ` [PATCH v2 01/12] OpenMP: metadirective tree data structures and front-end interfaces Sandra Loosemore
                   ` (11 more replies)
  0 siblings, 12 replies; 14+ messages in thread
From: Sandra Loosemore @ 2024-05-29 19:04 UTC (permalink / raw)
  To: gcc-patches; +Cc: jakub, tburnus

This is an updated version of the patch series I posted a few weeks
ago:

https://gcc.gnu.org/pipermail/gcc-patches/2024-May/650725.html

I won't duplicate the full list of things implemented/fixed here from
the original patch mail.  The incremental changes since then include:

* I rebased the entire patch series against mainline head, as the
  previous set wouldn't apply cleanly any more.

* I have fixed the previously-noted test regression in
  declare-variant-1.f90.  (The fix is the new patch hunks to
  tree-nested.cc that I have folded into part 2.)

* While working on that, I also made some tweaks to the raw-format
  pretty print support, also incorporated into part 2.

* After I posted the previous patch set, the Linaro CI testbot
  reported a failure in c-c++-common/gomp/declare-variant-13.c on
  aarch64.  That should be fixed now too (incorporated into part 9).

So, other than rebasing, the only substantive changes from the last version
are in parts 2 and 9.

I'm still reserving the previously-noted problems related to PR113904
for some future follow-up work.  This is already a large patch set and
it would be helpful to get it reviewed before layering on more changes
to "declare variant" that touch the same code.

-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                             |  473 +++-
 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                        |   20 +-
 gcc/fortran/io.cc                             |    2 +-
 gcc/fortran/match.h                           |    2 +
 gcc/fortran/openmp.cc                         |  294 ++-
 gcc/fortran/parse.cc                          |  571 +++--
 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                            | 2033 +++++++++--------
 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 +-
 .../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       |   21 +
 .../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/attrs-metadirective-1.C       |   40 +
 .../g++.dg/gomp/attrs-metadirective-2.C       |   74 +
 .../g++.dg/gomp/attrs-metadirective-3.C       |   19 +
 .../g++.dg/gomp/attrs-metadirective-4.C       |   41 +
 .../g++.dg/gomp/attrs-metadirective-5.C       |   24 +
 .../g++.dg/gomp/attrs-metadirective-6.C       |   31 +
 .../g++.dg/gomp/attrs-metadirective-7.C       |   31 +
 .../g++.dg/gomp/attrs-metadirective-8.C       |   16 +
 .../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      |   24 +
 .../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                              |   40 +
 .../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 +
 .../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 +
 161 files changed, 8172 insertions(+), 1655 deletions(-)
 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/attrs-metadirective-1.C
 create mode 100644 gcc/testsuite/g++.dg/gomp/attrs-metadirective-2.C
 create mode 100644 gcc/testsuite/g++.dg/gomp/attrs-metadirective-3.C
 create mode 100644 gcc/testsuite/g++.dg/gomp/attrs-metadirective-4.C
 create mode 100644 gcc/testsuite/g++.dg/gomp/attrs-metadirective-5.C
 create mode 100644 gcc/testsuite/g++.dg/gomp/attrs-metadirective-6.C
 create mode 100644 gcc/testsuite/g++.dg/gomp/attrs-metadirective-7.C
 create mode 100644 gcc/testsuite/g++.dg/gomp/attrs-metadirective-8.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.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


^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2024-05-31 12:22 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-05-29 19:04 [PATCH v2 00/12] OpenMP: Metadirective support + "declare variant" improvements Sandra Loosemore
2024-05-29 19:04 ` [PATCH v2 01/12] OpenMP: metadirective tree data structures and front-end interfaces Sandra Loosemore
2024-05-31 12:22   ` Tobias Burnus
2024-05-29 19:04 ` [PATCH v2 02/12] OpenMP: middle-end support for metadirectives Sandra Loosemore
2024-05-29 19:04 ` [PATCH v2 03/12] libgomp: runtime support for target_device selector Sandra Loosemore
2024-05-29 19:04 ` [PATCH v2 04/12] OpenMP: C front end support for metadirectives Sandra Loosemore
2024-05-29 19:04 ` [PATCH v2 05/12] OpenMP: C++ front-end " Sandra Loosemore
2024-05-29 19:04 ` [PATCH v2 06/12] OpenMP: common c/c++ testcases " Sandra Loosemore
2024-05-29 19:04 ` [PATCH v2 07/12] OpenMP: Fortran front-end support " Sandra Loosemore
2024-05-29 19:04 ` [PATCH v2 08/12] OpenMP: Reject other properties with kind(any) Sandra Loosemore
2024-05-29 19:04 ` [PATCH v2 09/12] OpenMP: Extend dynamic selector support to declare variant Sandra Loosemore
2024-05-29 19:04 ` [PATCH v2 10/12] OpenMP: Remove dead code from declare variant reimplementation Sandra Loosemore
2024-05-29 19:04 ` [PATCH v2 11/12] OpenMP: Update "declare target"/OpenMP context interaction Sandra Loosemore
2024-05-29 19:05 ` [PATCH v2 12/12] OpenMP: Update documentation of metadirective implementation status Sandra Loosemore

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).