mbox series

[OG13,0/6] OpenMP: Support for imperfectly-nested loops

Message ID 20230614220804.917436-1-sandra@codesourcery.com
Headers show
Series OpenMP: Support for imperfectly-nested loops | expand

Message

Sandra Loosemore June 14, 2023, 10:07 p.m. UTC
I have pushed this set of patches to the OG13 development branch.  The
major functional change compared to the mainline version I previously
posted on April 28 is that this version is integrated with Frederik's
loop transformation patches that were previously committed to this
branch.  I've also incorporated several cleanups suggested in review
of the mainline version, along with a few bug fixes.

Sandra Loosemore (6):
  OpenMP: Handle loop transformation clauses in nested functions
  OpenMP: C support for imperfectly-nested loops
  OpenMP: C++ support for imperfectly-nested loops
  OpenMP: New c/c++ testcases for imperfectly-nested loops
  OpenMP: Refactor and tidy Fortran front-end code for loop
    transformations
  OpenMP: Fortran support for imperfectly nested loops

 gcc/ChangeLog.omp                             |   16 +
 gcc/c/ChangeLog.omp                           |   19 +
 gcc/c/c-parser.cc                             |  833 +++++++----
 gcc/cp/ChangeLog.omp                          |   38 +
 gcc/cp/cp-tree.h                              |    2 +-
 gcc/cp/parser.cc                              | 1331 +++++++++++------
 gcc/cp/parser.h                               |    3 +
 gcc/cp/pt.cc                                  |    3 +-
 gcc/cp/semantics.cc                           |   80 +-
 gcc/fortran/ChangeLog.omp                     |   33 +
 gcc/fortran/openmp.cc                         | 1063 +++++++++----
 gcc/omp-api.h                                 |   32 +
 gcc/omp-general.cc                            |  134 ++
 gcc/omp-general.h                             |    1 +
 gcc/omp-low.cc                                |  129 --
 gcc/testsuite/ChangeLog.omp                   |   54 +
 gcc/testsuite/c-c++-common/goacc/collapse-1.c |   16 +-
 gcc/testsuite/c-c++-common/goacc/tile-2.c     |    4 +-
 gcc/testsuite/c-c++-common/gomp/imperfect1.c  |   38 +
 gcc/testsuite/c-c++-common/gomp/imperfect2.c  |   34 +
 gcc/testsuite/c-c++-common/gomp/imperfect3.c  |   33 +
 gcc/testsuite/c-c++-common/gomp/imperfect4.c  |   33 +
 gcc/testsuite/c-c++-common/gomp/imperfect5.c  |   57 +
 .../loop-transforms/imperfect-loop-nest.c     |    5 +-
 .../gomp/loop-transforms/tile-1.c             |   16 +-
 .../gomp/loop-transforms/tile-2.c             |   16 +-
 .../gomp/loop-transforms/tile-3.c             |   26 +-
 .../gomp/loop-transforms/unroll-inner-2.c     |    6 +-
 .../c-c++-common/gomp/metadirective-1.c       |    2 +-
 gcc/testsuite/g++.dg/gomp/attrs-4.C           |    2 +-
 gcc/testsuite/g++.dg/gomp/for-1.C             |    2 +-
 gcc/testsuite/g++.dg/gomp/pr41967.C           |    2 +-
 gcc/testsuite/g++.dg/gomp/pr94512.C           |    2 +-
 gcc/testsuite/gcc.dg/gomp/collapse-1.c        |   10 +-
 gcc/testsuite/gcc.dg/gomp/for-1.c             |    2 +-
 gcc/testsuite/gcc.dg/gomp/for-11.c            |    2 +-
 gcc/testsuite/gfortran.dg/gomp/collapse1.f90  |    4 +-
 gcc/testsuite/gfortran.dg/gomp/collapse2.f90  |   10 +-
 gcc/testsuite/gfortran.dg/gomp/imperfect1.f90 |   39 +
 gcc/testsuite/gfortran.dg/gomp/imperfect2.f90 |   56 +
 gcc/testsuite/gfortran.dg/gomp/imperfect3.f90 |   29 +
 gcc/testsuite/gfortran.dg/gomp/imperfect4.f90 |   36 +
 gcc/testsuite/gfortran.dg/gomp/imperfect5.f90 |   67 +
 .../gomp/loop-transforms/tile-1.f90           |   12 +-
 .../gomp/loop-transforms/tile-2.f90           |    2 +-
 .../loop-transforms/tile-imperfect-nest.f90   |   16 +-
 gcc/tree-nested.cc                            |   14 +
 libgomp/ChangeLog.omp                         |   48 +
 .../testsuite/libgomp.c++/imperfect-class-1.C |  169 +++
 .../testsuite/libgomp.c++/imperfect-class-2.C |  167 +++
 .../testsuite/libgomp.c++/imperfect-class-3.C |  167 +++
 .../libgomp.c++/imperfect-destructor.C        |  135 ++
 .../libgomp.c++/imperfect-template-1.C        |  172 +++
 .../libgomp.c++/imperfect-template-2.C        |  170 +++
 .../libgomp.c++/imperfect-template-3.C        |  170 +++
 .../imperfect-transform-1.c                   |   79 +
 .../imperfect-transform-2.c                   |   79 +
 .../libgomp.c-c++-common/imperfect1.c         |   76 +
 .../libgomp.c-c++-common/imperfect2.c         |  114 ++
 .../libgomp.c-c++-common/imperfect3.c         |  119 ++
 .../libgomp.c-c++-common/imperfect4.c         |  117 ++
 .../libgomp.c-c++-common/imperfect5.c         |   49 +
 .../libgomp.c-c++-common/imperfect6.c         |  115 ++
 .../target-imperfect-transform-1.c            |   82 +
 .../target-imperfect-transform-2.c            |   82 +
 .../libgomp.c-c++-common/target-imperfect1.c  |   81 +
 .../libgomp.c-c++-common/target-imperfect2.c  |  122 ++
 .../libgomp.c-c++-common/target-imperfect3.c  |  125 ++
 .../libgomp.c-c++-common/target-imperfect4.c  |  122 ++
 .../libgomp.fortran/imperfect-destructor.f90  |  142 ++
 .../libgomp.fortran/imperfect-transform-1.f90 |   70 +
 .../libgomp.fortran/imperfect-transform-2.f90 |   70 +
 .../testsuite/libgomp.fortran/imperfect1.f90  |   67 +
 .../testsuite/libgomp.fortran/imperfect2.f90  |  102 ++
 .../testsuite/libgomp.fortran/imperfect3.f90  |  110 ++
 .../testsuite/libgomp.fortran/imperfect4.f90  |  121 ++
 .../loop-transforms/nested-fn.f90             |   19 +
 .../target-imperfect-transform-1.f90          |   73 +
 .../target-imperfect-transform-2.f90          |   73 +
 .../libgomp.fortran/target-imperfect1.f90     |   72 +
 .../libgomp.fortran/target-imperfect2.f90     |  110 ++
 .../libgomp.fortran/target-imperfect3.f90     |  116 ++
 .../libgomp.fortran/target-imperfect4.f90     |  126 ++
 83 files changed, 6921 insertions(+), 1274 deletions(-)
 create mode 100644 gcc/omp-api.h
 create mode 100644 gcc/testsuite/c-c++-common/gomp/imperfect1.c
 create mode 100644 gcc/testsuite/c-c++-common/gomp/imperfect2.c
 create mode 100644 gcc/testsuite/c-c++-common/gomp/imperfect3.c
 create mode 100644 gcc/testsuite/c-c++-common/gomp/imperfect4.c
 create mode 100644 gcc/testsuite/c-c++-common/gomp/imperfect5.c
 create mode 100644 gcc/testsuite/gfortran.dg/gomp/imperfect1.f90
 create mode 100644 gcc/testsuite/gfortran.dg/gomp/imperfect2.f90
 create mode 100644 gcc/testsuite/gfortran.dg/gomp/imperfect3.f90
 create mode 100644 gcc/testsuite/gfortran.dg/gomp/imperfect4.f90
 create mode 100644 gcc/testsuite/gfortran.dg/gomp/imperfect5.f90
 create mode 100644 libgomp/testsuite/libgomp.c++/imperfect-class-1.C
 create mode 100644 libgomp/testsuite/libgomp.c++/imperfect-class-2.C
 create mode 100644 libgomp/testsuite/libgomp.c++/imperfect-class-3.C
 create mode 100644 libgomp/testsuite/libgomp.c++/imperfect-destructor.C
 create mode 100644 libgomp/testsuite/libgomp.c++/imperfect-template-1.C
 create mode 100644 libgomp/testsuite/libgomp.c++/imperfect-template-2.C
 create mode 100644 libgomp/testsuite/libgomp.c++/imperfect-template-3.C
 create mode 100644 libgomp/testsuite/libgomp.c-c++-common/imperfect-transform-1.c
 create mode 100644 libgomp/testsuite/libgomp.c-c++-common/imperfect-transform-2.c
 create mode 100644 libgomp/testsuite/libgomp.c-c++-common/imperfect1.c
 create mode 100644 libgomp/testsuite/libgomp.c-c++-common/imperfect2.c
 create mode 100644 libgomp/testsuite/libgomp.c-c++-common/imperfect3.c
 create mode 100644 libgomp/testsuite/libgomp.c-c++-common/imperfect4.c
 create mode 100644 libgomp/testsuite/libgomp.c-c++-common/imperfect5.c
 create mode 100644 libgomp/testsuite/libgomp.c-c++-common/imperfect6.c
 create mode 100644 libgomp/testsuite/libgomp.c-c++-common/target-imperfect-transform-1.c
 create mode 100644 libgomp/testsuite/libgomp.c-c++-common/target-imperfect-transform-2.c
 create mode 100644 libgomp/testsuite/libgomp.c-c++-common/target-imperfect1.c
 create mode 100644 libgomp/testsuite/libgomp.c-c++-common/target-imperfect2.c
 create mode 100644 libgomp/testsuite/libgomp.c-c++-common/target-imperfect3.c
 create mode 100644 libgomp/testsuite/libgomp.c-c++-common/target-imperfect4.c
 create mode 100644 libgomp/testsuite/libgomp.fortran/imperfect-destructor.f90
 create mode 100644 libgomp/testsuite/libgomp.fortran/imperfect-transform-1.f90
 create mode 100644 libgomp/testsuite/libgomp.fortran/imperfect-transform-2.f90
 create mode 100644 libgomp/testsuite/libgomp.fortran/imperfect1.f90
 create mode 100644 libgomp/testsuite/libgomp.fortran/imperfect2.f90
 create mode 100644 libgomp/testsuite/libgomp.fortran/imperfect3.f90
 create mode 100644 libgomp/testsuite/libgomp.fortran/imperfect4.f90
 create mode 100644 libgomp/testsuite/libgomp.fortran/loop-transforms/nested-fn.f90
 create mode 100644 libgomp/testsuite/libgomp.fortran/target-imperfect-transform-1.f90
 create mode 100644 libgomp/testsuite/libgomp.fortran/target-imperfect-transform-2.f90
 create mode 100644 libgomp/testsuite/libgomp.fortran/target-imperfect1.f90
 create mode 100644 libgomp/testsuite/libgomp.fortran/target-imperfect2.f90
 create mode 100644 libgomp/testsuite/libgomp.fortran/target-imperfect3.f90
 create mode 100644 libgomp/testsuite/libgomp.fortran/target-imperfect4.f90