[0/4] OpenMP: Parsing of lvalues for "map" clauses for C andjC++

Message ID cover.1636974589.git.julian@codesourcery.com
Headers
Series OpenMP: Parsing of lvalues for "map" clauses for C andjC++ |

Message

Julian Brown Nov. 15, 2021, 11:18 a.m. UTC
  This patch series builds on top of the previously-posted series:

"Topological sort for OpenMP 5.0 base pointers"
https://gcc.gnu.org/pipermail/gcc-patches/2021-August/577211.html

and:

"OpenMP: Deep struct dereferences"
https://gcc.gnu.org/pipermail/gcc-patches/2021-October/580721.html

To add support for parsing general lvalues in "map" clauses in both
C and C++.  A new "address inspector" class is introduced in order to
unify address analyses from several places in the C/C++ front-ends which
had some level of duplication.

Tested with offloading to NVPTX, and bootstrapped.  OK?

Julian Brown (4):
  Add debug_omp_expr
  OpenMP: Add inspector class to unify mapped address analysis
  OpenMP: lvalue parsing for map clauses (C++)
  OpenMP: lvalue parsing for map clauses (C)

 gcc/c-family/c-common.h                       |  44 +++
 gcc/c-family/c-omp.c                          | 172 ++++++++++-
 gcc/c/c-parser.c                              | 150 ++++++++--
 gcc/c/c-tree.h                                |   1 +
 gcc/c/c-typeck.c                              | 232 +++++----------
 gcc/cp/error.c                                |   9 +
 gcc/cp/parser.c                               | 141 ++++++++-
 gcc/cp/parser.h                               |   3 +
 gcc/cp/semantics.c                            | 278 +++++++-----------
 gcc/gimplify.c                                |  37 ++-
 gcc/testsuite/c-c++-common/gomp/map-1.c       |   3 +-
 gcc/testsuite/c-c++-common/gomp/map-6.c       |   6 +-
 gcc/testsuite/g++.dg/gomp/pr67522.C           |   2 +-
 .../g++.dg/gomp/unmappable-component-1.C      |  21 ++
 gcc/tree-pretty-print.c                       |  45 +++
 gcc/tree-pretty-print.h                       |   1 +
 gcc/tree.def                                  |   3 +
 libgomp/testsuite/libgomp.c++/ind-base-1.C    | 162 ++++++++++
 libgomp/testsuite/libgomp.c++/ind-base-2.C    |  49 +++
 libgomp/testsuite/libgomp.c++/struct-ref-1.C  |  97 ++++++
 20 files changed, 1088 insertions(+), 368 deletions(-)
 create mode 100644 gcc/testsuite/g++.dg/gomp/unmappable-component-1.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++/struct-ref-1.C