From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa1.mentor.iphmx.com (esa1.mentor.iphmx.com [68.232.129.153]) by sourceware.org (Postfix) with ESMTPS id F01C73858C5E for ; Wed, 14 Jun 2023 22:08:22 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org F01C73858C5E Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=mentor.com X-IronPort-AV: E=Sophos;i="6.00,243,1681200000"; d="scan'208";a="9902134" Received: from orw-gwy-01-in.mentorg.com ([192.94.38.165]) by esa1.mentor.iphmx.com with ESMTP; 14 Jun 2023 14:08:21 -0800 IronPort-SDR: Mb7gZVp0/RRoiWj74ZWG9ld4vRtms6ayQrgSCSosri+ahY4v/0DOwmRvrV/I5lAXeCmu8VFXY4 g4xGHmhNXECeJyCyqPC7qGmXjNQbk6nnqjoQ1axdpVlnT1fC9w5zWmsZKd6HIym3GKVy59lIxq AOYhIVx36lSPAKwgfU3nkcL7Q786bYwQDSZ/WxdXAjFqqlNCkvkTO17aET6R3bVO3h46407e6N EE6ybggDUmfw9A0jfYNDz/DTShaN3FLbTdn2DA0dkJUur+dLInqcVZESYlkE+o9bsJYYk7do8R RL4= From: Sandra Loosemore To: Subject: [OG13 0/6] OpenMP: Support for imperfectly-nested loops Date: Wed, 14 Jun 2023 16:07:58 -0600 Message-ID: <20230614220804.917436-1-sandra@codesourcery.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: svr-orw-mbx-15.mgc.mentorg.com (147.34.90.215) To svr-orw-mbx-13.mgc.mentorg.com (147.34.90.213) X-Spam-Status: No, score=-3.9 required=5.0 tests=BAYES_00,HEADER_FROM_DIFFERENT_DOMAINS,KAM_DMARC_STATUS,SPF_HELO_PASS,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: 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