From patchwork Wed Dec 15 15:54:07 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Frederik Harwath X-Patchwork-Id: 48942 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 38DCD3858414 for ; Wed, 15 Dec 2021 15:55:20 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from esa3.mentor.iphmx.com (esa3.mentor.iphmx.com [68.232.137.180]) by sourceware.org (Postfix) with ESMTPS id E90AA3858D39; Wed, 15 Dec 2021 15:55:00 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org E90AA3858D39 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=mentor.com IronPort-SDR: PWuT9a27F5Veco3nUSYhMKPG26T5ygY0KI7vF7seBH0xQPPSOtLLdwxFnfeng7fLAcI0qniMXW YxF0XUNdWYp3l/rLePMIudQtDl+0errlTl/10fpDRr+RZn9EhIb8WyHF+LpViv2GiQOVSMeYnJ jXdTtDq6Y5MdxQ1Q0FCSN7eVHkNovRyHNArkYV1nlvvKjVzZe3yp4TDb7RPRVoXllBCstWQkSW hZ8jCOFfTc8WhNxusvO2YtDi2LxIr2CHdqIizm8+c21kPeDh8JwRjCjOFvUeAZWgMpv7k9Fa09 RnDOf4InBfJqBLETMz9TnSmX X-IronPort-AV: E=Sophos;i="5.88,207,1635235200"; d="scan'208";a="69584561" Received: from orw-gwy-02-in.mentorg.com ([192.94.38.167]) by esa3.mentor.iphmx.com with ESMTP; 15 Dec 2021 07:55:00 -0800 IronPort-SDR: 3V/XFbEhNudhViiZL52NvUm22H0T4TjP4GdMTncBYOZNo6Cq/juiVGETSifks4JBtc6nOlmeoy KfCmYzyxcE0uKGPTU4YBPa6iz5KA59iBlIZr0Fgsh5ajlpXhuuQFVinzPDCn1O6pfmUnc9cXPf a8oz15tJc2YkDKniNqMGE/B+5AqTdzEQghKWpw3ccGx0Iow0Vn/IeXBMIcu5TUs4mib1UoYB9n SYdQXbuxWPPCPM0ZJh+ujo1kYYkDswlKZblyLAgfnZvfxMzrMl57uo3u6vihcV6ULTB6YYkgsU tLc= From: Frederik Harwath To: Subject: [PATCH 00/40] OpenACC "kernels" Improvements Date: Wed, 15 Dec 2021 16:54:07 +0100 Message-ID: <20211215155447.19379-1-frederik@codesourcery.com> X-Mailer: git-send-email 2.33.0 MIME-Version: 1.0 X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: svr-ies-mbx-09.mgc.mentorg.com (139.181.222.9) To SVR-IES-MBX-04.mgc.mentorg.com (139.181.222.4) X-Spam-Status: No, score=-6.5 required=5.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS, KAM_DMARC_STATUS, SPF_HELO_PASS, SPF_PASS, TXREP autolearn=no autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Catherine_Moore@mentor.com, matz@suse.de, rguenther@suse.de, fortran@gcc.gnu.org Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org Sender: "Gcc-patches" 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