From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa2.mentor.iphmx.com (esa2.mentor.iphmx.com [68.232.141.98]) by sourceware.org (Postfix) with ESMTPS id E84263858C27 for ; Fri, 28 Jul 2023 13:04:55 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org E84263858C27 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.01,237,1684828800"; d="scan'208";a="14532016" Received: from orw-gwy-02-in.mentorg.com ([192.94.38.167]) by esa2.mentor.iphmx.com with ESMTP; 28 Jul 2023 05:04:54 -0800 IronPort-SDR: bESWMvMn4bJWcXSAYn88iXrdBdOwqZyKAJ5m+dRkyo1szKsp8xD9wXkkqJtdGevIo4hL0xjqkX +aP6vzzEPBApxjc9u8tG3cTRiVDINyKlvw30jRJxP0T/P13w8fSQZawGhiKaudnHtOGwn94qJt hERuhbXUGvWqpGJhPYjX69ERyiJegr/INkpk5K0ChjuVqmp7vzXszBHR+v6zXyOLfIqCaJagiA L9YUN452m1xzgBMwBA3V0Ieq/cFkwnROMNt7IADGFf8Ie3eMsUcxNc6nRWQGqg8ic+r01ec6G7 s8U= From: Frederik Harwath To: , , Subject: [PATCH 2/4] openmp: Fix initialization for 'unroll full' Date: Fri, 28 Jul 2023 13:04:31 +0000 Message-ID: <20230728130433.2377366-3-frederik@codesourcery.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230728130433.2377366-1-frederik@codesourcery.com> References: <20230324153046.3996092-1-frederik@codesourcery.com> <20230728130433.2377366-1-frederik@codesourcery.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: svr-ies-mbx-12.mgc.mentorg.com (139.181.222.12) To svr-ies-mbx-10.mgc.mentorg.com (139.181.222.10) X-Spam-Status: No, score=-12.5 required=5.0 tests=BAYES_00,GIT_PATCH_0,HEADER_FROM_DIFFERENT_DOMAINS,KAM_DMARC_STATUS,SPF_HELO_PASS,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: The index variable initialization for the 'omp unroll' directive with 'full' clause got lost and the testsuite did not catch it. Add the initialization and add -Wall to some tests to detect uninitialized variable uses and other potential problems in the code generation. gcc/ChangeLog: * omp-transform-loops.cc (full_unroll): Add initialization of index= variable. libgomp/ChangeLog: * testsuite/libgomp.c-c++-common/loop-transforms/matrix-no-directiv= e-unroll-full-1.c: Use -Wall and add -Wno-unknown-pragmas to disable warnings about em= pty pragmas. Use -O2. * testsuite/libgomp.c++/loop-transforms/matrix-no-directive-unroll-= full-1.C: Copy of testsuite/libgomp.c-c++-common/matrix-no-directive-unroll-f= ull-1.c, but using -O0 which works only for C++. * testsuite/libgomp.c-c++-common/loop-transforms/matrix-no-directiv= e-1.c: Use -Wall and use -Wno-unknown-pragmas to disable warnings about empty pragma= s. * testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-distrib= ute-parallel-for-1.c: Likewise. * testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-for-1.c= : Likewise. * testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-paralle= l-for-1.c: Likewise. * testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-paralle= l-masked-taskloop-1.c: Likewise. * testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-paralle= l-masked-taskloop-simd-1.c: Likewise. * testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-target-= parallel-for-1.c: Likewise. * testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-target-= teams-distribute-parallel-for-1.c: Likewise. * testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-taskloo= p-1.c: Likewise. * testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-teams-d= istribute-parallel-for-1.c: Likewise. * testsuite/libgomp.c-c++-common/loop-transforms/matrix-simd-1.c: Likewise. * testsuite/libgomp.c-c++-common/loop-transforms/unroll-non-rect-1.= c: Likewise. * testsuite/libgomp.c-c++-common/loop-transforms/unroll-1.c: Likewise and fix broken function calls found by -Wall. --- gcc/omp-transform-loops.cc | 1 + .../matrix-no-directive-unroll-full-1.C | 13 +++++++++++++ .../loop-transforms/matrix-no-directive-1.c | 2 +- .../matrix-no-directive-unroll-full-1.c | 2 +- .../matrix-omp-distribute-parallel-for-1.c | 2 ++ .../loop-transforms/matrix-omp-for-1.c | 2 +- .../loop-transforms/matrix-omp-parallel-for-1.c | 2 +- .../matrix-omp-parallel-masked-taskloop-1.c | 2 ++ .../matrix-omp-parallel-masked-taskloop-simd-1.c | 2 ++ .../matrix-omp-target-parallel-for-1.c | 2 +- ...rix-omp-target-teams-distribute-parallel-for-1.c | 2 ++ .../loop-transforms/matrix-omp-taskloop-1.c | 2 ++ .../matrix-omp-teams-distribute-parallel-for-1.c | 2 ++ .../loop-transforms/matrix-simd-1.c | 2 ++ .../libgomp.c-c++-common/loop-transforms/unroll-1.c | 8 +++++--- .../loop-transforms/unroll-non-rect-1.c | 2 ++ 16 files changed, 40 insertions(+), 8 deletions(-) create mode 100644 libgomp/testsuite/libgomp.c++/loop-transforms/matrix-no= -directive-unroll-full-1.C diff --git a/gcc/omp-transform-loops.cc b/gcc/omp-transform-loops.cc index 517faea537c..275a5260dae 100644 --- a/gcc/omp-transform-loops.cc +++ b/gcc/omp-transform-loops.cc @@ -548,6 +548,7 @@ full_unroll (gomp_for *omp_for, location_t loc, walk_ct= x *ctx ATTRIBUTE_UNUSED) gimple_seq unrolled =3D NULL; gimple_seq_add_seq (&unrolled, gimple_omp_for_pre_body (omp_for)); + gimplify_assign (index, init, &unrolled); push_gimplify_context (); gimple_seq_add_seq (&unrolled, build_unroll_body (body, unroll_factor, index, incr))= ; diff --git a/libgomp/testsuite/libgomp.c++/loop-transforms/matrix-no-direct= ive-unroll-full-1.C b/libgomp/testsuite/libgomp.c++/loop-transforms/matrix-= no-directive-unroll-full-1.C new file mode 100644 index 00000000000..3a684219627 --- /dev/null +++ b/libgomp/testsuite/libgomp.c++/loop-transforms/matrix-no-directive-unr= oll-full-1.C @@ -0,0 +1,13 @@ +/* { dg-additional-options { -O0 -fdump-tree-original -Wall -Wno-unknown-p= ragmas } } */ + +#define COMMON_DIRECTIVE +#define COMMON_TOP_TRANSFORM omp unroll full +#define COLLAPSE_1 +#define COLLAPSE_2 +#define COLLAPSE_3 +#define IMPLEMENTATION_FILE "../../libgomp.c-c++-common/loop-transforms/ma= trix-constant-iter.h" + +#include "../../libgomp.c-c++-common/loop-transforms/matrix-transform-vari= ants-1.h" + +/* A consistency check to prevent broken macro usage. */ +/* { dg-final { scan-tree-dump-times "unroll_full" 13 "original" } } */ diff --git a/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-= no-directive-1.c b/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/m= atrix-no-directive-1.c index 9f7f02041b0..7904a5617f3 100644 --- a/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-no-dire= ctive-1.c +++ b/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-no-dire= ctive-1.c @@ -1,4 +1,4 @@ -/* { dg-additional-options {-fdump-tree-original} } */ +/* { dg-additional-options { -fdump-tree-original -Wall -Wno-unknown-pragm= as } } */ #define COMMON_DIRECTIVE #define COLLAPSE_1 collapse(1) diff --git a/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-= no-directive-unroll-full-1.c b/libgomp/testsuite/libgomp.c-c++-common/loop-= transforms/matrix-no-directive-unroll-full-1.c index 5dd0b5d2989..bd431a25102 100644 --- a/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-no-dire= ctive-unroll-full-1.c +++ b/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-no-dire= ctive-unroll-full-1.c @@ -1,4 +1,4 @@ -/* { dg-additional-options {-fdump-tree-original} } */ +/* { dg-additional-options { -O2 -fdump-tree-original -Wall -Wno-unknown-p= ragmas } } */ #define COMMON_DIRECTIVE #define COMMON_TOP_TRANSFORM omp unroll full diff --git a/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-= omp-distribute-parallel-for-1.c b/libgomp/testsuite/libgomp.c-c++-common/lo= op-transforms/matrix-omp-distribute-parallel-for-1.c index d855857e5ee..3875014dc96 100644 --- a/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-dis= tribute-parallel-for-1.c +++ b/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-dis= tribute-parallel-for-1.c @@ -1,3 +1,5 @@ +/* { dg-additional-options { -Wall -Wno-unknown-pragmas } } */ + #define COMMON_DIRECTIVE "omp teams distribute parallel for" #define COLLAPSE_1 "collapse(1)" #define COLLAPSE_2 "collapse(2)" diff --git a/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-= omp-for-1.c b/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix= -omp-for-1.c index f2a2b80b2fd..671396cd533 100644 --- a/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-for= -1.c +++ b/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-for= -1.c @@ -1,4 +1,4 @@ -/* { dg-additional-options {-fdump-tree-original} } */ +/* { dg-additional-options { -fdump-tree-original -Wall -Wno-unknown-pragm= as } } */ #define COMMON_DIRECTIVE omp for #define COLLAPSE_1 collapse(1) diff --git a/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-= omp-parallel-for-1.c b/libgomp/testsuite/libgomp.c-c++-common/loop-transfor= ms/matrix-omp-parallel-for-1.c index 2c5701efca4..cc66df42679 100644 --- a/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-par= allel-for-1.c +++ b/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-par= allel-for-1.c @@ -1,4 +1,4 @@ -/* { dg-additional-options {-fdump-tree-original} } */ +/* { dg-additional-options { -fdump-tree-original -Wall -Wno-unknown-pragm= as } } */ #define COMMON_DIRECTIVE omp parallel for #define COLLAPSE_1 collapse(1) diff --git a/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-= omp-parallel-masked-taskloop-1.c b/libgomp/testsuite/libgomp.c-c++-common/l= oop-transforms/matrix-omp-parallel-masked-taskloop-1.c index e2def212725..890b460f374 100644 --- a/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-par= allel-masked-taskloop-1.c +++ b/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-par= allel-masked-taskloop-1.c @@ -1,3 +1,5 @@ +/* { dg-additional-options { -Wall -Wno-unknown-pragmas } } */ + #define COMMON_DIRECTIVE omp parallel masked taskloop #define COLLAPSE_1 collapse(1) #define COLLAPSE_2 collapse(2) diff --git a/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-= omp-parallel-masked-taskloop-simd-1.c b/libgomp/testsuite/libgomp.c-c++-com= mon/loop-transforms/matrix-omp-parallel-masked-taskloop-simd-1.c index ce601555cfb..74f6271504a 100644 --- a/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-par= allel-masked-taskloop-simd-1.c +++ b/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-par= allel-masked-taskloop-simd-1.c @@ -1,3 +1,5 @@ +/* { dg-additional-options { -Wall -Wno-unknown-pragmas } } */ + #define COMMON_DIRECTIVE omp parallel masked taskloop simd #define COLLAPSE_1 collapse(1) #define COLLAPSE_2 collapse(2) diff --git a/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-= omp-target-parallel-for-1.c b/libgomp/testsuite/libgomp.c-c++-common/loop-t= ransforms/matrix-omp-target-parallel-for-1.c index 365b39ba385..8138ea57f38 100644 --- a/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-tar= get-parallel-for-1.c +++ b/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-tar= get-parallel-for-1.c @@ -1,4 +1,4 @@ -/* { dg-additional-options {-fdump-tree-original} } */ +/* { dg-additional-options { -fdump-tree-original -Wall -Wno-unknown-pragm= as } } */ #define COMMON_DIRECTIVE omp target parallel for map(tofrom:result[0:dim0*= dim1]) map(to:matrix1[0:dim0*dim1], matrix2[0:dim0*dim1]) #define COLLAPSE_1 collapse(1) diff --git a/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-= omp-target-teams-distribute-parallel-for-1.c b/libgomp/testsuite/libgomp.c-= c++-common/loop-transforms/matrix-omp-target-teams-distribute-parallel-for-= 1.c index 8afe34874c9..d4d162d9c2b 100644 --- a/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-tar= get-teams-distribute-parallel-for-1.c +++ b/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-tar= get-teams-distribute-parallel-for-1.c @@ -1,3 +1,5 @@ +/* { dg-additional-options { -Wall -Wno-unknown-pragmas } } */ + #define COMMON_DIRECTIVE omp target teams distribute parallel for map(tofr= om:result[:dim0*dim1]) map(to:matrix1[0:dim0*dim1], matrix2[0:dim0*dim1]) #define COLLAPSE_1 collapse(1) #define COLLAPSE_2 collapse(2) diff --git a/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-= omp-taskloop-1.c b/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/m= atrix-omp-taskloop-1.c index bbc78b39db0..28edb6ce83e 100644 --- a/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-tas= kloop-1.c +++ b/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-tas= kloop-1.c @@ -1,3 +1,5 @@ +/* { dg-additional-options { -Wall -Wno-unknown-pragmas } } */ + #define COMMON_DIRECTIVE omp taskloop #define COLLAPSE_1 collapse(1) #define COLLAPSE_2 collapse(2) diff --git a/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-= omp-teams-distribute-parallel-for-1.c b/libgomp/testsuite/libgomp.c-c++-com= mon/loop-transforms/matrix-omp-teams-distribute-parallel-for-1.c index 3a58e479374..481a20a18d0 100644 --- a/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-tea= ms-distribute-parallel-for-1.c +++ b/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-tea= ms-distribute-parallel-for-1.c @@ -1,3 +1,5 @@ +/* { dg-additional-options { -Wall -Wno-unknown-pragmas } } */ + #define COMMON_DIRECTIVE omp teams distribute parallel for #define COLLAPSE_1 collapse(1) #define COLLAPSE_2 collapse(2) diff --git a/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-= simd-1.c b/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-si= md-1.c index e5155dcf76d..200ddd859f5 100644 --- a/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-simd-1.= c +++ b/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-simd-1.= c @@ -1,3 +1,5 @@ +/* { dg-additional-options { -Wall -Wno-unknown-pragmas } } */ + #define COMMON_DIRECTIVE omp simd #define COLLAPSE_1 collapse(1) #define COLLAPSE_2 collapse(2) diff --git a/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/unroll-= 1.c b/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/unroll-1.c index 2ac0fff16af..eb5d3d77eb8 100644 --- a/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/unroll-1.c +++ b/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/unroll-1.c @@ -1,3 +1,5 @@ +/* { dg-additional-options { -Wall -Wno-unknown-pragmas } } */ + #include int compute_sum1 () @@ -11,7 +13,7 @@ int compute_sum1 () sum++; if (j !=3D 7) - __builtin_abort; + __builtin_abort (); return sum; } @@ -27,7 +29,7 @@ int compute_sum2() sum++; if (j !=3D 7) - __builtin_abort; + __builtin_abort (); return sum; } @@ -43,7 +45,7 @@ int compute_sum3() sum++; if (j !=3D 7) - __builtin_abort; + __builtin_abort (); return sum; } diff --git a/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/unroll-= non-rect-1.c b/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/unrol= l-non-rect-1.c index 2f9924aea1f..7bd9b906235 100644 --- a/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/unroll-non-rec= t-1.c +++ b/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/unroll-non-rec= t-1.c @@ -1,3 +1,5 @@ +/* { dg-additional-options { -Wall -Wno-unknown-pragmas } } */ + #include #include -- 2.36.1 ----------------- Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstra=DFe 201, 8= 0634 M=FCnchen; Gesellschaft mit beschr=E4nkter Haftung; Gesch=E4ftsf=FChre= r: Thomas Heurung, Frank Th=FCrauf; Sitz der Gesellschaft: M=FCnchen; Regis= tergericht M=FCnchen, HRB 106955