mbox

[00/40] OpenACC "kernels" Improvements

Message ID 20211215155447.19379-1-frederik@codesourcery.com
Headers

Message

Frederik Harwath Dec. 15, 2021, 3:54 p.m. UTC
  Hi,
this patch series implements the re-work of the OpenACC "kernels"
implementation that has been announced at the GNU Tools Track of this
year's Linux Plumbers Conference; see
https://linuxplumbersconf.org/event/11/contributions/998/.  Versions
of the patches have also been committed to the devel/omp/gcc-11 branch
recently.

The patch series contains middle-end changes that modify the "kernels"
loop handling to use Graphite for dependence analysis of loops in
"kernels" regions, as well as new optimizations and adjustments to
existing optimizations to support this analysis. A central step is
contained in the commit titled "openacc: Use Graphite for dependence
analysis in \"kernels\" regions" whose commit message also contains
further explanations. There are also front end changes (cf. the
patches by Sandra Loosemore) that prepare the loops in "kernels"
regions for the middle-end processing and which lift various
restrictions on "kernels" regions.  I have included some dependences
(the patches by Julian Brown) from the devel/omp/gcc-11 branch which
will be re-submitted independently for review.

I have bootstrapped the compiler on x86_64-linux-gnu and performed
comprehensive testing on a powerpc64le-linux-gnu target.  The patches
should apply cleanly on commit r12-4865 of the master branch.

I am aware that we cannot incorporate those patches into GCC at the
current development stage. I hope that we can discuss some of the
changes before they can be considered for inclusion in GCC during the
next stage 1.

Best regards,
Frederik


Andrew Stubbs (2):
  openacc: Add data optimization pass
  openacc: Add runtime a lias checking for OpenACC kernels

Frederik Harwath (20):
  Fortran: Delinearize array accesses
  openacc: Move pass_oacc_device_lower after pass_graphite
  graphite: Extend SCoP detection dump output
  graphite: Rename isl_id_for_ssa_name
  graphite: Fix minor mistakes in comments
  Move compute_alias_check_pairs to tree-data-ref.c
  graphite: Add runtime alias checking
  openacc: Use Graphite for dependence analysis in "kernels" regions
  openacc: Add "can_be_parallel" flag info to "graph" dumps
  openacc: Remove unused partitioning in "kernels" regions
  Add function for printing a single OMP_CLAUSE
  openacc: Warn about "independent" "kernels" loops with
    data-dependences
  openacc: Handle internal function calls in pass_lim
  openacc: Disable pass_pre on outlined functions analyzed by Graphite
  graphite: Tune parameters for OpenACC use
  graphite: Adjust scop loop-nest choice
  graphite: Accept loops without data references
  openacc: Enable reduction variable localization for "kernels"
  openacc: Check type for references in reduction lowering
  openacc: Adjust testsuite to new "kernels" handling

Julian Brown (4):
  Reference reduction localization
  Fix tree check failure with reduction localization
  Use more appropriate var in localize_reductions call
  Handle references in OpenACC "private" clauses

Sandra Loosemore (12):
  Kernels loops annotation: C and C++.
  Add -fno-openacc-kernels-annotate-loops option to more testcases.
  Kernels loops annotation: Fortran.
  Additional Fortran testsuite fixes for kernels loops annotation pass.
  Fix bug in processing of array dimensions in data clauses.
  Add a "combined" flag for "acc kernels loop" etc directives.
  Annotate inner loops in "acc kernels loop" directives (C/C++).
  Annotate inner loops in "acc kernels loop" directives (Fortran).
  Permit calls to builtins and intrinsics in kernels loops.
  Fix patterns in Fortran tests for kernels loop annotation.
  Clean up loop variable extraction in OpenACC kernels loop annotation.
  Relax some restrictions on the loop bound in kernels loop annotation.

Tobias Burnus (2):
  Fix for is_gimple_reg vars to 'data kernels'
  openacc: fix privatization of by-reference arrays

 gcc/Makefile.in                               |   2 +
 gcc/c-family/c-common.h                       |   1 +
 gcc/c-family/c-omp.c                          | 915 +++++++++++++++--
 gcc/c-family/c.opt                            |   8 +
 gcc/c/c-decl.c                                |  28 +
 gcc/c/c-parser.c                              |   3 +
 gcc/cfgloop.c                                 |   1 +
 gcc/cfgloop.h                                 |   6 +
 gcc/cfgloopmanip.c                            |   1 +
 gcc/common.opt                                |   9 +
 gcc/config/nvptx/nvptx.c                      |   7 +
 gcc/cp/decl.c                                 |  44 +
 gcc/cp/parser.c                               |   3 +
 gcc/cp/semantics.c                            |   9 +
 gcc/doc/gimple.texi                           |   2 +
 gcc/doc/invoke.texi                           |  52 +-
 gcc/doc/passes.texi                           |   6 +-
 gcc/expr.c                                    |   1 +
 gcc/flag-types.h                              |   1 +
 gcc/fortran/gfortran.h                        |   1 +
 gcc/fortran/lang.opt                          |  12 +
 gcc/fortran/openmp.c                          | 415 ++++++++
 gcc/fortran/parse.c                           |   9 +
 gcc/fortran/trans-array.c                     | 321 ++++--
 gcc/fortran/trans-openmp.c                    |  34 +-
 gcc/gimple-loop-interchange.cc                |   2 +-
 gcc/gimple-pretty-print.c                     |   3 +
 gcc/gimple-walk.c                             |  15 +-
 gcc/gimple-walk.h                             |   6 +
 gcc/gimple.h                                  |   5 +
 gcc/gimplify.c                                | 117 +++
 gcc/graph.c                                   |  35 +-
 gcc/graphite-dependences.c                    | 220 ++--
 gcc/graphite-isl-ast-to-gimple.c              | 271 ++++-
 gcc/graphite-oacc.c                           | 688 +++++++++++++
 gcc/graphite-oacc.h                           |  55 +
 gcc/graphite-optimize-isl.c                   |  42 +-
 gcc/graphite-poly.c                           |  41 +-
 gcc/graphite-scop-detection.c                 | 651 ++++++++++--
 gcc/graphite-sese-to-poly.c                   |  90 +-
 gcc/graphite.c                                | 120 ++-
 gcc/graphite.h                                |  40 +-
 gcc/internal-fn.c                             |   4 +
 gcc/internal-fn.h                             |   4 +-
 gcc/omp-data-optimize.cc                      | 951 ++++++++++++++++++
 gcc/omp-expand.c                              | 102 +-
 gcc/omp-general.c                             |  23 +-
 gcc/omp-general.h                             |   1 +
 gcc/omp-low.c                                 | 439 ++++++--
 gcc/omp-oacc-kernels-decompose.cc             | 154 ++-
 gcc/omp-oacc-neuter-broadcast.cc              |   2 +
 gcc/omp-offload.c                             | 830 ++++++++++++---
 gcc/omp-offload.h                             |   2 +
 gcc/params.opt                                |   7 +-
 gcc/passes.c                                  |  42 +
 gcc/passes.def                                |  47 +-
 gcc/sese.c                                    |  25 +-
 gcc/sese.h                                    |  19 +
 .../c-c++-common/goacc-gomp/nesting-1.c       |  10 +-
 gcc/testsuite/c-c++-common/goacc/cache-3-1.c  |   2 +-
 .../goacc/classify-kernels-unparallelized.c   |  35 +-
 .../c-c++-common/goacc/classify-kernels.c     |  24 +-
 .../c-c++-common/goacc/classify-parallel.c    |   8 +-
 .../goacc/classify-routine-nohost.c           |  20 +-
 .../c-c++-common/goacc/classify-routine.c     |  22 +-
 .../c-c++-common/goacc/classify-serial.c      |   8 +-
 .../c-c++-common/goacc/combined-directives.c  |   2 +-
 .../device-lowering-debug-optimization.c      |  29 +
 .../goacc/device-lowering-no-loops.c          |  17 +
 .../goacc/device-lowering-no-optimization.c   |  30 +
 .../c-c++-common/goacc/if-clause-2.c          |   2 +-
 gcc/testsuite/c-c++-common/goacc/kernels-1.c  |  17 +-
 .../kernels-counter-var-redundant-load.c      |  19 +-
 .../kernels-counter-vars-function-scope.c     |  10 +-
 .../c-c++-common/goacc/kernels-decompose-1.c  |  31 +-
 .../c-c++-common/goacc/kernels-decompose-2.c  |  57 +-
 .../goacc/kernels-decompose-ice-1.c           |   7 +-
 .../goacc/kernels-decompose-ice-2.c           |   3 +-
 .../goacc/kernels-double-reduction-n.c        |   6 +-
 .../goacc/kernels-double-reduction.c          |   5 +-
 .../c-c++-common/goacc/kernels-loop-2.c       |  19 +-
 .../c-c++-common/goacc/kernels-loop-3.c       |   3 +
 .../goacc/kernels-loop-annotation-1.c         |  26 +
 .../goacc/kernels-loop-annotation-10.c        |  32 +
 .../goacc/kernels-loop-annotation-11.c        |  27 +
 .../goacc/kernels-loop-annotation-12.c        |  28 +
 .../goacc/kernels-loop-annotation-13.c        |  27 +
 .../goacc/kernels-loop-annotation-14.c        |  22 +
 .../goacc/kernels-loop-annotation-15.c        |  22 +
 .../goacc/kernels-loop-annotation-16.c        |  26 +
 .../goacc/kernels-loop-annotation-17.c        |  26 +
 .../goacc/kernels-loop-annotation-18.c        |  18 +
 .../goacc/kernels-loop-annotation-19.c        |  19 +
 .../goacc/kernels-loop-annotation-2.c         |  21 +
 .../goacc/kernels-loop-annotation-20.c        |  23 +
 .../goacc/kernels-loop-annotation-21.c        |  42 +
 .../goacc/kernels-loop-annotation-22.c        |  41 +
 .../goacc/kernels-loop-annotation-3.c         |  24 +
 .../goacc/kernels-loop-annotation-4.c         |  34 +
 .../goacc/kernels-loop-annotation-5.c         |  27 +
 .../goacc/kernels-loop-annotation-6.c         |  27 +
 .../goacc/kernels-loop-annotation-7.c         |  26 +
 .../goacc/kernels-loop-annotation-8.c         |  27 +
 .../goacc/kernels-loop-annotation-9.c         |  26 +
 .../c-c++-common/goacc/kernels-loop-data-2.c  |  17 +-
 .../goacc/kernels-loop-data-enter-exit-2.c    |  16 +-
 .../goacc/kernels-loop-data-enter-exit.c      |  17 +-
 .../goacc/kernels-loop-data-update.c          |  13 +-
 .../c-c++-common/goacc/kernels-loop-data.c    |  12 +-
 .../c-c++-common/goacc/kernels-loop-g.c       |  14 +-
 .../goacc/kernels-loop-mod-not-zero.c         |  10 +-
 .../c-c++-common/goacc/kernels-loop-n.c       |  10 +-
 .../c-c++-common/goacc/kernels-loop-nest.c    |  12 +-
 .../c-c++-common/goacc/kernels-loop.c         |  10 +-
 .../goacc/kernels-one-counter-var.c           |  12 +-
 .../kernels-parallel-loop-data-enter-exit.c   |  17 +-
 .../c-c++-common/goacc/kernels-reduction.c    |  10 +-
 .../c-c++-common/goacc/loop-2-kernels.c       |   6 +-
 .../c-c++-common/goacc/loop-auto-1.c          | 127 +--
 .../c-c++-common/goacc/loop-auto-2.c          |  37 +-
 .../c-c++-common/goacc/loop-auto-reductions.c |  22 +
 .../goacc/nested-reductions-2-parallel.c      | 138 +++
 .../goacc/note-parallelism-kernels-loops-1.c  |  61 ++
 .../note-parallelism-kernels-loops-parloops.c |  53 +
 .../c-c++-common/goacc/omp_data_optimize-1.c  | 677 +++++++++++++
 .../c-c++-common/goacc/routine-nohost-1.c     |   8 +-
 gcc/testsuite/c-c++-common/unroll-1.c         |   8 +-
 gcc/testsuite/c-c++-common/unroll-4.c         |   4 +-
 .../g++.dg/goacc/omp_data_optimize-1.C        | 169 ++++
 gcc/testsuite/g++.dg/goacc/template.C         |  18 +-
 .../gcc.dg/goacc/graphite-parameter-1.c       |  21 +
 .../gcc.dg/goacc/graphite-parameter-2.c       |  23 +
 .../gcc.dg/goacc/loop-processing-1.c          |   8 +-
 .../gcc.dg/goacc/nested-function-1.c          |   3 +-
 gcc/testsuite/gcc.dg/graphite/alias-1.c       |  22 +
 gcc/testsuite/gcc.dg/tree-ssa/backprop-1.c    |   6 +-
 gcc/testsuite/gcc.dg/tree-ssa/backprop-2.c    |   4 +-
 gcc/testsuite/gcc.dg/tree-ssa/backprop-3.c    |   4 +-
 gcc/testsuite/gcc.dg/tree-ssa/backprop-4.c    |   6 +-
 gcc/testsuite/gcc.dg/tree-ssa/backprop-5.c    |   4 +-
 gcc/testsuite/gcc.dg/tree-ssa/backprop-6.c    |   6 +-
 gcc/testsuite/gcc.dg/tree-ssa/cunroll-1.c     |   6 +-
 gcc/testsuite/gcc.dg/tree-ssa/cunroll-3.c     |   4 +-
 gcc/testsuite/gcc.dg/tree-ssa/cunroll-9.c     |   4 +-
 gcc/testsuite/gcc.dg/tree-ssa/ldist-17.c      |   2 +-
 gcc/testsuite/gcc.dg/tree-ssa/loop-38.c       |   4 +-
 gcc/testsuite/gcc.dg/tree-ssa/loopclosedphi.c |   2 +-
 gcc/testsuite/gcc.dg/tree-ssa/pr21463.c       |   4 +-
 gcc/testsuite/gcc.dg/tree-ssa/pr45427.c       |   4 +-
 gcc/testsuite/gcc.dg/tree-ssa/pr59597.c       |   2 +-
 gcc/testsuite/gcc.dg/tree-ssa/pr61743-1.c     |   2 +-
 gcc/testsuite/gcc.dg/unroll-2.c               |   2 +-
 gcc/testsuite/gcc.dg/unroll-3.c               |   4 +-
 gcc/testsuite/gcc.dg/unroll-4.c               |   4 +-
 gcc/testsuite/gcc.dg/unroll-5.c               |   4 +-
 gcc/testsuite/gcc.dg/vect/bb-slp-59.c         |   2 +-
 gcc/testsuite/gcc.dg/vect/vect-profile-1.c    |   2 +-
 gcc/testsuite/gfortran.dg/assumed_type_2.f90  |   6 +-
 .../gfortran.dg/directive_unroll_1.f90        |   2 +-
 .../gfortran.dg/directive_unroll_4.f90        |   2 +-
 ...assify-kernels-unparallelized-parloops.f95 |  44 +
 .../goacc/classify-kernels-unparallelized.f95 |  27 +-
 .../gfortran.dg/goacc/classify-kernels.f95    |  21 +-
 .../gfortran.dg/goacc/classify-parallel.f95   |   6 +-
 .../goacc/classify-routine-nohost.f95         |  18 +-
 .../gfortran.dg/goacc/classify-routine.f95    |  20 +-
 .../gfortran.dg/goacc/classify-serial.f95     |   8 +-
 .../gfortran.dg/goacc/combined-directives.f90 |  19 +-
 .../gfortran.dg/goacc/common-block-3.f90      |  17 +-
 .../gfortran.dg/goacc/gang-static.f95         |  14 +-
 .../gfortran.dg/goacc/kernels-conversion.f95  |  52 +
 .../gfortran.dg/goacc/kernels-decompose-1.f95 | 186 ++--
 .../gfortran.dg/goacc/kernels-decompose-2.f95 | 113 ++-
 .../gfortran.dg/goacc/kernels-loop-2.f95      |  10 +-
 .../goacc/kernels-loop-annotation-1.f95       |  33 +
 .../goacc/kernels-loop-annotation-10.f95      |  32 +
 .../goacc/kernels-loop-annotation-11.f95      |  34 +
 .../goacc/kernels-loop-annotation-12.f95      |  39 +
 .../goacc/kernels-loop-annotation-13.f95      |  38 +
 .../goacc/kernels-loop-annotation-14.f95      |  35 +
 .../goacc/kernels-loop-annotation-15.f95      |  35 +
 .../goacc/kernels-loop-annotation-16.f95      |  34 +
 .../goacc/kernels-loop-annotation-18.f95      |  28 +
 .../goacc/kernels-loop-annotation-19.f95      |  29 +
 .../goacc/kernels-loop-annotation-2.f95       |  32 +
 .../goacc/kernels-loop-annotation-20.f95      |  26 +
 .../goacc/kernels-loop-annotation-3.f95       |  33 +
 .../goacc/kernels-loop-annotation-4.f95       |  34 +
 .../goacc/kernels-loop-annotation-5.f95       |  35 +
 .../goacc/kernels-loop-annotation-6.f95       |  34 +
 .../goacc/kernels-loop-annotation-7.f95       |  48 +
 .../goacc/kernels-loop-annotation-8.f95       |  50 +
 .../goacc/kernels-loop-annotation-9.f95       |  34 +
 .../gfortran.dg/goacc/kernels-loop-data-2.f95 |  10 +-
 .../goacc/kernels-loop-data-enter-exit-2.f95  |  12 +-
 .../goacc/kernels-loop-data-enter-exit.f95    |  12 +-
 .../goacc/kernels-loop-data-update.f95        |  12 +-
 .../gfortran.dg/goacc/kernels-loop-data.f95   |  14 +-
 .../gfortran.dg/goacc/kernels-loop-inner.f95  |   6 +-
 .../gfortran.dg/goacc/kernels-loop-n.f95      |  13 +-
 .../gfortran.dg/goacc/kernels-loop.f95        |   9 +-
 .../kernels-parallel-loop-data-enter-exit.f95 |  12 +-
 .../gfortran.dg/goacc/kernels-reductions.f90  |  37 +
 .../gfortran.dg/goacc/kernels-tree.f95        |   2 +-
 .../gfortran.dg/goacc/loop-2-kernels.f95      |   6 +-
 .../goacc/loop-auto-transfer-2.f90            |  45 +
 .../goacc/loop-auto-transfer-3.f90            |  95 ++
 .../goacc/loop-auto-transfer-4.f90            | 293 ++++++
 .../gfortran.dg/goacc/nested-function-1.f90   |  12 +-
 .../goacc/nested-reductions-2-parallel.f90    | 177 ++++
 .../gfortran.dg/goacc/omp_data_optimize-1.f90 | 588 +++++++++++
 .../goacc/private-explicit-kernels-1.f95      |  20 +-
 .../goacc/private-predetermined-kernels-1.f95 |  23 +-
 .../goacc/privatization-1-compute-loop.f90    |   3 -
 .../goacc/routine-module-mod-1.f90            |   4 +-
 .../goacc/routine-multiple-directives-1.f90   |  32 +-
 .../gfortran.dg/gomp/affinity-clause-1.f90    |   2 +-
 gcc/testsuite/gfortran.dg/graphite/block-2.f  |   9 +-
 .../gfortran.dg/graphite/block-3.f90          |   2 +-
 .../gfortran.dg/graphite/block-4.f90          |   2 +-
 gcc/testsuite/gfortran.dg/graphite/id-9.f     |   2 +-
 .../gfortran.dg/inline_matmul_16.f90          |   2 +
 .../gfortran.dg/inline_matmul_24.f90          |   2 +-
 gcc/testsuite/gfortran.dg/no_arg_check_2.f90  |   6 +-
 gcc/testsuite/gfortran.dg/pr32921.f           |   2 +-
 gcc/testsuite/gfortran.dg/reassoc_4.f         |   2 +-
 .../gfortran.dg/vect/fast-math-mgrid-resid.f  |   1 +
 gcc/tree-chrec.c                              |   3 +
 gcc/tree-core.h                               |   4 +-
 gcc/tree-data-ref.c                           | 107 +-
 gcc/tree-data-ref.h                           |   3 +
 gcc/tree-loop-distribution.c                  |  87 --
 gcc/tree-parloops.c                           |  18 +-
 gcc/tree-pass.h                               |   3 +
 gcc/tree-pretty-print.c                       |  11 +
 gcc/tree-pretty-print.h                       |   1 +
 gcc/tree-scalar-evolution.c                   | 177 +++-
 gcc/tree-scalar-evolution.h                   |   3 +
 gcc/tree-ssa-dce.c                            |  23 +
 gcc/tree-ssa-loop-im.c                        |  57 +-
 gcc/tree-ssa-loop-ivcanon.c                   |   2 +
 gcc/tree-ssa-loop-manip.h                     |   2 +-
 gcc/tree-ssa-loop-niter.c                     |   6 +
 gcc/tree-ssa-loop.c                           | 110 ++
 gcc/tree-ssa-phiprop.c                        |   2 +
 gcc/tree-ssa-pre.c                            |  17 +
 gcc/tree.c                                    | 137 ++-
 gcc/tree.h                                    |   7 +
 .../libgomp.oacc-c++/privatized-ref-2.C       |  64 ++
 .../libgomp.oacc-c++/privatized-ref-3.C       |  64 ++
 .../acc_prof-kernels-1.c                      |  22 +-
 .../declare-vla-kernels-decompose-ice-1.c     |   4 -
 .../kernels-decompose-1.c                     |  10 +-
 .../kernels-private-vars-local-worker-1.c     |   6 +-
 .../kernels-private-vars-local-worker-2.c     |   6 +-
 .../kernels-private-vars-local-worker-3.c     |   6 +-
 .../kernels-private-vars-local-worker-4.c     |   8 +-
 .../kernels-private-vars-local-worker-5.c     |   6 +-
 .../kernels-private-vars-loop-gang-1.c        |   4 +-
 .../kernels-private-vars-loop-gang-2.c        |   4 +-
 .../kernels-private-vars-loop-gang-3.c        |   4 +-
 .../kernels-private-vars-loop-gang-4.c        |  15 +-
 .../kernels-private-vars-loop-gang-5.c        |  10 +-
 .../kernels-private-vars-loop-gang-6.c        |   4 +-
 .../kernels-private-vars-loop-vector-1.c      |   6 +-
 .../kernels-private-vars-loop-vector-2.c      |   6 +-
 .../kernels-private-vars-loop-worker-1.c      |   8 +-
 .../kernels-private-vars-loop-worker-2.c      |   6 +-
 .../kernels-private-vars-loop-worker-3.c      |   6 +-
 .../kernels-private-vars-loop-worker-4.c      |   6 +-
 .../kernels-private-vars-loop-worker-5.c      |   9 +-
 .../kernels-private-vars-loop-worker-6.c      |   6 +-
 .../kernels-private-vars-loop-worker-7.c      |   6 +-
 .../libgomp.oacc-c-c++-common/loop-auto-1.c   |  30 +-
 .../libgomp.oacc-c-c++-common/parallel-dims.c |  39 +-
 .../libgomp.oacc-c-c++-common/pr84955-1.c     |   1 -
 .../libgomp.oacc-c-c++-common/pr85381-2.c     |   8 +-
 .../libgomp.oacc-c-c++-common/pr85381-3.c     |   8 +-
 .../libgomp.oacc-c-c++-common/pr85381-4.c     |   4 +-
 .../libgomp.oacc-c-c++-common/pr85486-2.c     |   4 +-
 .../libgomp.oacc-c-c++-common/pr85486-3.c     |   4 +-
 .../libgomp.oacc-c-c++-common/pr85486.c       |   4 +-
 .../routine-nohost-1.c                        |   6 +-
 .../runtime-alias-check-1.c                   |  79 ++
 .../runtime-alias-check-2.c                   |  90 ++
 .../vector-length-128-1.c                     |   5 +-
 .../vector-length-128-2.c                     |   5 +-
 .../vector-length-128-3.c                     |   5 +-
 .../vector-length-128-4.c                     |   5 +-
 .../vector-length-128-5.c                     |   5 +-
 .../vector-length-128-6.c                     |   5 +-
 .../vector-length-128-7.c                     |   5 +-
 .../testsuite/libgomp.oacc-fortran/if-1.f90   |  32 +-
 .../kernels-acc-loop-reduction-2.f90          |  12 +-
 .../kernels-independent.f90                   |   1 +
 .../libgomp.oacc-fortran/kernels-loop-1.f90   |   1 +
 .../kernels-private-vars-loop-gang-1.f90      |   4 +-
 .../kernels-private-vars-loop-gang-2.f90      |   4 +-
 .../kernels-private-vars-loop-gang-3.f90      |   4 +-
 .../kernels-private-vars-loop-gang-6.f90      |   5 +-
 .../kernels-private-vars-loop-vector-1.f90    |   4 +-
 .../kernels-private-vars-loop-vector-2.f90    |  11 +-
 .../kernels-private-vars-loop-worker-1.f90    |   6 +-
 .../kernels-private-vars-loop-worker-2.f90    |   4 +-
 .../kernels-private-vars-loop-worker-3.f90    |   4 +-
 .../kernels-private-vars-loop-worker-4.f90    |   4 +-
 .../kernels-private-vars-loop-worker-5.f90    |   7 +-
 .../kernels-private-vars-loop-worker-6.f90    |   4 +-
 .../kernels-private-vars-loop-worker-7.f90    |   6 +-
 .../libgomp.oacc-fortran/optional-private.f90 |   2 -
 .../libgomp.oacc-fortran/pr94358-1.f90        |   7 +-
 .../libgomp.oacc-fortran/privatized-ref-1.f95 |  71 ++
 .../libgomp.oacc-fortran/routine-nohost-1.f90 |   4 +-
 313 files changed, 12131 insertions(+), 1729 deletions(-)
 create mode 100644 gcc/graphite-oacc.c
 create mode 100644 gcc/graphite-oacc.h
 create mode 100644 gcc/omp-data-optimize.cc
 create mode 100644 gcc/testsuite/c-c++-common/goacc/device-lowering-debug-optimization.c
 create mode 100644 gcc/testsuite/c-c++-common/goacc/device-lowering-no-loops.c
 create mode 100644 gcc/testsuite/c-c++-common/goacc/device-lowering-no-optimization.c
 create mode 100644 gcc/testsuite/c-c++-common/goacc/kernels-loop-annotation-1.c
 create mode 100644 gcc/testsuite/c-c++-common/goacc/kernels-loop-annotation-10.c
 create mode 100644 gcc/testsuite/c-c++-common/goacc/kernels-loop-annotation-11.c
 create mode 100644 gcc/testsuite/c-c++-common/goacc/kernels-loop-annotation-12.c
 create mode 100644 gcc/testsuite/c-c++-common/goacc/kernels-loop-annotation-13.c
 create mode 100644 gcc/testsuite/c-c++-common/goacc/kernels-loop-annotation-14.c
 create mode 100644 gcc/testsuite/c-c++-common/goacc/kernels-loop-annotation-15.c
 create mode 100644 gcc/testsuite/c-c++-common/goacc/kernels-loop-annotation-16.c
 create mode 100644 gcc/testsuite/c-c++-common/goacc/kernels-loop-annotation-17.c
 create mode 100644 gcc/testsuite/c-c++-common/goacc/kernels-loop-annotation-18.c
 create mode 100644 gcc/testsuite/c-c++-common/goacc/kernels-loop-annotation-19.c
 create mode 100644 gcc/testsuite/c-c++-common/goacc/kernels-loop-annotation-2.c
 create mode 100644 gcc/testsuite/c-c++-common/goacc/kernels-loop-annotation-20.c
 create mode 100644 gcc/testsuite/c-c++-common/goacc/kernels-loop-annotation-21.c
 create mode 100644 gcc/testsuite/c-c++-common/goacc/kernels-loop-annotation-22.c
 create mode 100644 gcc/testsuite/c-c++-common/goacc/kernels-loop-annotation-3.c
 create mode 100644 gcc/testsuite/c-c++-common/goacc/kernels-loop-annotation-4.c
 create mode 100644 gcc/testsuite/c-c++-common/goacc/kernels-loop-annotation-5.c
 create mode 100644 gcc/testsuite/c-c++-common/goacc/kernels-loop-annotation-6.c
 create mode 100644 gcc/testsuite/c-c++-common/goacc/kernels-loop-annotation-7.c
 create mode 100644 gcc/testsuite/c-c++-common/goacc/kernels-loop-annotation-8.c
 create mode 100644 gcc/testsuite/c-c++-common/goacc/kernels-loop-annotation-9.c
 create mode 100644 gcc/testsuite/c-c++-common/goacc/loop-auto-reductions.c
 create mode 100644 gcc/testsuite/c-c++-common/goacc/note-parallelism-kernels-loops-1.c
 create mode 100644 gcc/testsuite/c-c++-common/goacc/note-parallelism-kernels-loops-parloops.c
 create mode 100644 gcc/testsuite/c-c++-common/goacc/omp_data_optimize-1.c
 create mode 100644 gcc/testsuite/g++.dg/goacc/omp_data_optimize-1.C
 create mode 100644 gcc/testsuite/gcc.dg/goacc/graphite-parameter-1.c
 create mode 100644 gcc/testsuite/gcc.dg/goacc/graphite-parameter-2.c
 create mode 100644 gcc/testsuite/gcc.dg/graphite/alias-1.c
 create mode 100644 gcc/testsuite/gfortran.dg/goacc/classify-kernels-unparallelized-parloops.f95
 create mode 100644 gcc/testsuite/gfortran.dg/goacc/kernels-conversion.f95
 create mode 100644 gcc/testsuite/gfortran.dg/goacc/kernels-loop-annotation-1.f95
 create mode 100644 gcc/testsuite/gfortran.dg/goacc/kernels-loop-annotation-10.f95
 create mode 100644 gcc/testsuite/gfortran.dg/goacc/kernels-loop-annotation-11.f95
 create mode 100644 gcc/testsuite/gfortran.dg/goacc/kernels-loop-annotation-12.f95
 create mode 100644 gcc/testsuite/gfortran.dg/goacc/kernels-loop-annotation-13.f95
 create mode 100644 gcc/testsuite/gfortran.dg/goacc/kernels-loop-annotation-14.f95
 create mode 100644 gcc/testsuite/gfortran.dg/goacc/kernels-loop-annotation-15.f95
 create mode 100644 gcc/testsuite/gfortran.dg/goacc/kernels-loop-annotation-16.f95
 create mode 100644 gcc/testsuite/gfortran.dg/goacc/kernels-loop-annotation-18.f95
 create mode 100644 gcc/testsuite/gfortran.dg/goacc/kernels-loop-annotation-19.f95
 create mode 100644 gcc/testsuite/gfortran.dg/goacc/kernels-loop-annotation-2.f95
 create mode 100644 gcc/testsuite/gfortran.dg/goacc/kernels-loop-annotation-20.f95
 create mode 100644 gcc/testsuite/gfortran.dg/goacc/kernels-loop-annotation-3.f95
 create mode 100644 gcc/testsuite/gfortran.dg/goacc/kernels-loop-annotation-4.f95
 create mode 100644 gcc/testsuite/gfortran.dg/goacc/kernels-loop-annotation-5.f95
 create mode 100644 gcc/testsuite/gfortran.dg/goacc/kernels-loop-annotation-6.f95
 create mode 100644 gcc/testsuite/gfortran.dg/goacc/kernels-loop-annotation-7.f95
 create mode 100644 gcc/testsuite/gfortran.dg/goacc/kernels-loop-annotation-8.f95
 create mode 100644 gcc/testsuite/gfortran.dg/goacc/kernels-loop-annotation-9.f95
 create mode 100644 gcc/testsuite/gfortran.dg/goacc/kernels-reductions.f90
 create mode 100644 gcc/testsuite/gfortran.dg/goacc/loop-auto-transfer-2.f90
 create mode 100644 gcc/testsuite/gfortran.dg/goacc/loop-auto-transfer-3.f90
 create mode 100644 gcc/testsuite/gfortran.dg/goacc/loop-auto-transfer-4.f90
 create mode 100644 gcc/testsuite/gfortran.dg/goacc/omp_data_optimize-1.f90
 create mode 100644 libgomp/testsuite/libgomp.oacc-c++/privatized-ref-2.C
 create mode 100644 libgomp/testsuite/libgomp.oacc-c++/privatized-ref-3.C
 create mode 100644 libgomp/testsuite/libgomp.oacc-c-c++-common/runtime-alias-check-1.c
 create mode 100644 libgomp/testsuite/libgomp.oacc-c-c++-common/runtime-alias-check-2.c
 create mode 100644 libgomp/testsuite/libgomp.oacc-fortran/privatized-ref-1.f95

--
2.33.0

-----------------
Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht München, HRB 106955