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
--
2.31.1