This patchset implements support for OpenMP allocate directive support
in C++. This version splits the patch up into a significantly more coherent and
reviewable set of patches. I ran into many issues during this, as a result this
version gains a few features, and loses some early diagnostics in templates.
However, it should also be significantly more polished.

Bootstrapped and regtested on x86_64-linux-gnu.

Waffl3x (12):
  libgomp.c: Change _Alignof to alignof for C++ in test
  OpenMP/C: Change repetitive allocator clause diagnostic wording
  OpenMP/C++: Remove case PRAGMA_OMP_ALLOCATE from
    cp_parser_omp_construct
  OpenMP/C++: Add support for 'omp allocate' directive
  OpenMP/C++: Enhance diagnostics of 'omp allocate' directive
  OpenMP/C++: Force location wrapper on 'omp allocate' directive clauses
  OpenMP/C++: Don't do NRVO on vars used in an 'omp allocate' directive
  OpenMP/C++: Add static analysis of allocate directive allocator clause
  OpenMP/C++: Diagnose constexpr vars in an allocate directive
  OpenMP/C++: Sorry for static vars in implicit constexpr functions
  OpenMP/C++: Sorry for allocate directive in omp::decl attribute
  OpenMP/C++: Avoid quadratic complexity in diagnostic

 gcc/c/c-parser.cc                             |    2 +-
 gcc/cp/constexpr.cc                           |    2 +
 gcc/cp/cp-tree.def                            |   11 +
 gcc/cp/cp-tree.h                              |   17 +
 gcc/cp/parser.cc                              |  405 ++++++-
 gcc/cp/pt.cc                                  |   40 +
 gcc/cp/semantics.cc                           |  414 +++++++
 gcc/cp/typeck.cc                              |    5 +-
 gcc/gimplify.cc                               |   10 +-
 gcc/testsuite/c-c++-common/gomp/allocate-10.c |    5 +-
 gcc/testsuite/c-c++-common/gomp/allocate-11.c |   29 +-
 gcc/testsuite/c-c++-common/gomp/allocate-12.c |   33 +-
 gcc/testsuite/c-c++-common/gomp/allocate-14.c |    3 -
 gcc/testsuite/c-c++-common/gomp/allocate-15.c |    3 -
 gcc/testsuite/c-c++-common/gomp/allocate-16.c |   20 +-
 gcc/testsuite/c-c++-common/gomp/allocate-17.c |    2 +-
 gcc/testsuite/c-c++-common/gomp/allocate-18.c |   18 +-
 gcc/testsuite/c-c++-common/gomp/allocate-19.c |   25 +-
 gcc/testsuite/c-c++-common/gomp/allocate-20.c |  343 ++++++
 gcc/testsuite/c-c++-common/gomp/allocate-5.c  |   32 +-
 gcc/testsuite/c-c++-common/gomp/allocate-9.c  |   94 +-
 .../gomp/allocate-allocator-handle.h          |   19 +
 gcc/testsuite/c-c++-common/gomp/directive-1.c |    1 -
 .../c-c++-common/gomp/uses_allocators-1.c     |    4 +-
 gcc/testsuite/g++.dg/gomp/allocate-10.C       |  111 ++
 gcc/testsuite/g++.dg/gomp/allocate-11.C       |   18 +
 gcc/testsuite/g++.dg/gomp/allocate-12.C       |   38 +
 gcc/testsuite/g++.dg/gomp/allocate-13.C       |   28 +
 gcc/testsuite/g++.dg/gomp/allocate-14.C       | 1037 +++++++++++++++++
 gcc/testsuite/g++.dg/gomp/allocate-15.C       |   92 ++
 gcc/testsuite/g++.dg/gomp/allocate-16.C       |  251 ++++
 gcc/testsuite/g++.dg/gomp/allocate-17.C       |  557 +++++++++
 gcc/testsuite/g++.dg/gomp/allocate-18.C       |  274 +++++
 gcc/testsuite/g++.dg/gomp/allocate-19.C       |  128 ++
 gcc/testsuite/g++.dg/gomp/allocate-20.C       |   96 ++
 gcc/testsuite/g++.dg/gomp/allocate-21.C       |   88 ++
 gcc/testsuite/g++.dg/gomp/allocate-22.C       |   31 +
 gcc/testsuite/g++.dg/gomp/allocate-23.C       |   24 +
 gcc/testsuite/g++.dg/gomp/allocate-24.C       |   26 +
 gcc/testsuite/g++.dg/gomp/allocate-5.C        |  410 +++++++
 gcc/testsuite/g++.dg/gomp/allocate-6.C        |  391 +++++++
 gcc/testsuite/g++.dg/gomp/allocate-7.C        |  224 ++++
 gcc/testsuite/g++.dg/gomp/allocate-8.C        |   48 +
 gcc/testsuite/g++.dg/gomp/allocate-9.C        |   78 ++
 .../g++.dg/gomp/allocate-allocator-handle.h   |   18 +
 .../g++.dg/gomp/allocate-handles-1.C          |   61 +
 .../g++.dg/gomp/allocate-handles-2.C          |   45 +
 gcc/testsuite/g++.dg/gomp/omp-constexpr.C     |    3 +-
 libgomp/testsuite/libgomp.c++/allocate-2.C    |  329 ++++++
 .../allocate-4.c                              |    3 -
 .../allocate-5.c                              |    3 -
 .../allocate-6.c                              |    3 -
 .../allocate-7.c                              |    8 +-
 53 files changed, 5752 insertions(+), 208 deletions(-)
 create mode 100644 gcc/testsuite/c-c++-common/gomp/allocate-20.c
 create mode 100644 gcc/testsuite/c-c++-common/gomp/allocate-allocator-handle.h
 create mode 100644 gcc/testsuite/g++.dg/gomp/allocate-10.C
 create mode 100644 gcc/testsuite/g++.dg/gomp/allocate-11.C
 create mode 100644 gcc/testsuite/g++.dg/gomp/allocate-12.C
 create mode 100644 gcc/testsuite/g++.dg/gomp/allocate-13.C
 create mode 100644 gcc/testsuite/g++.dg/gomp/allocate-14.C
 create mode 100644 gcc/testsuite/g++.dg/gomp/allocate-15.C
 create mode 100644 gcc/testsuite/g++.dg/gomp/allocate-16.C
 create mode 100644 gcc/testsuite/g++.dg/gomp/allocate-17.C
 create mode 100644 gcc/testsuite/g++.dg/gomp/allocate-18.C
 create mode 100644 gcc/testsuite/g++.dg/gomp/allocate-19.C
 create mode 100644 gcc/testsuite/g++.dg/gomp/allocate-20.C
 create mode 100644 gcc/testsuite/g++.dg/gomp/allocate-21.C
 create mode 100644 gcc/testsuite/g++.dg/gomp/allocate-22.C
 create mode 100644 gcc/testsuite/g++.dg/gomp/allocate-23.C
 create mode 100644 gcc/testsuite/g++.dg/gomp/allocate-24.C
 create mode 100644 gcc/testsuite/g++.dg/gomp/allocate-5.C
 create mode 100644 gcc/testsuite/g++.dg/gomp/allocate-6.C
 create mode 100644 gcc/testsuite/g++.dg/gomp/allocate-7.C
 create mode 100644 gcc/testsuite/g++.dg/gomp/allocate-8.C
 create mode 100644 gcc/testsuite/g++.dg/gomp/allocate-9.C
 create mode 100644 gcc/testsuite/g++.dg/gomp/allocate-allocator-handle.h
 create mode 100644 gcc/testsuite/g++.dg/gomp/allocate-handles-1.C
 create mode 100644 gcc/testsuite/g++.dg/gomp/allocate-handles-2.C
 create mode 100644 libgomp/testsuite/libgomp.c++/allocate-2.C
 rename libgomp/testsuite/{libgomp.c => libgomp.c-c++-common}/allocate-4.c (95%)
 rename libgomp/testsuite/{libgomp.c => libgomp.c-c++-common}/allocate-5.c (96%)
 rename libgomp/testsuite/{libgomp.c => libgomp.c-c++-common}/allocate-6.c (98%)
 rename libgomp/testsuite/{libgomp.c => libgomp.c-c++-common}/allocate-7.c (84%)

-- 
2.54.0

Reply via email to