From patchwork Fri Jul 28 13:04:31 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Frederik Harwath X-Patchwork-Id: 1814276 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=) Received: from server2.sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4RC7DH55LLz1ydx for ; Fri, 28 Jul 2023 23:05:51 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 80F973853559 for ; Fri, 28 Jul 2023 13:05:45 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org 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 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 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: , Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org Sender: "Gcc-patches" 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-directive-unroll-full-1.c: Use -Wall and add -Wno-unknown-pragmas to disable warnings about empty 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-full-1.c, but using -O0 which works only for C++. * testsuite/libgomp.c-c++-common/loop-transforms/matrix-no-directive-1.c: Use -Wall and use -Wno-unknown-pragmas to disable warnings about empty pragmas. * testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-distribute-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-parallel-for-1.c: Likewise. * testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-parallel-masked-taskloop-1.c: Likewise. * testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-parallel-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-taskloop-1.c: Likewise. * testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-teams-distribute-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 -- 2.36.1 ----------------- 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 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_ctx *ctx ATTRIBUTE_UNUSED) gimple_seq unrolled = 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-directive-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-unroll-full-1.C @@ -0,0 +1,13 @@ +/* { dg-additional-options { -O0 -fdump-tree-original -Wall -Wno-unknown-pragmas } } */ + +#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/matrix-constant-iter.h" + +#include "../../libgomp.c-c++-common/loop-transforms/matrix-transform-variants-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/matrix-no-directive-1.c index 9f7f02041b0..7904a5617f3 100644 --- a/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-no-directive-1.c +++ b/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-no-directive-1.c @@ -1,4 +1,4 @@ -/* { dg-additional-options {-fdump-tree-original} } */ +/* { dg-additional-options { -fdump-tree-original -Wall -Wno-unknown-pragmas } } */ #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-directive-unroll-full-1.c +++ b/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-no-directive-unroll-full-1.c @@ -1,4 +1,4 @@ -/* { dg-additional-options {-fdump-tree-original} } */ +/* { dg-additional-options { -O2 -fdump-tree-original -Wall -Wno-unknown-pragmas } } */ #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/loop-transforms/matrix-omp-distribute-parallel-for-1.c index d855857e5ee..3875014dc96 100644 --- a/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-distribute-parallel-for-1.c +++ b/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-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-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-pragmas } } */ #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-transforms/matrix-omp-parallel-for-1.c index 2c5701efca4..cc66df42679 100644 --- a/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-parallel-for-1.c +++ b/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-parallel-for-1.c @@ -1,4 +1,4 @@ -/* { dg-additional-options {-fdump-tree-original} } */ +/* { dg-additional-options { -fdump-tree-original -Wall -Wno-unknown-pragmas } } */ #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/loop-transforms/matrix-omp-parallel-masked-taskloop-1.c index e2def212725..890b460f374 100644 --- a/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-parallel-masked-taskloop-1.c +++ b/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-parallel-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++-common/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-parallel-masked-taskloop-simd-1.c +++ b/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-parallel-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-transforms/matrix-omp-target-parallel-for-1.c index 365b39ba385..8138ea57f38 100644 --- a/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-target-parallel-for-1.c +++ b/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-target-parallel-for-1.c @@ -1,4 +1,4 @@ -/* { dg-additional-options {-fdump-tree-original} } */ +/* { dg-additional-options { -fdump-tree-original -Wall -Wno-unknown-pragmas } } */ #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-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 @@ -1,3 +1,5 @@ +/* { dg-additional-options { -Wall -Wno-unknown-pragmas } } */ + #define COMMON_DIRECTIVE omp target teams distribute parallel for map(tofrom: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/matrix-omp-taskloop-1.c index bbc78b39db0..28edb6ce83e 100644 --- a/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-taskloop-1.c +++ b/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-taskloop-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++-common/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-teams-distribute-parallel-for-1.c +++ b/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-teams-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-simd-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 != 7) - __builtin_abort; + __builtin_abort (); return sum; } @@ -27,7 +29,7 @@ int compute_sum2() sum++; if (j != 7) - __builtin_abort; + __builtin_abort (); return sum; } @@ -43,7 +45,7 @@ int compute_sum3() sum++; if (j != 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/unroll-non-rect-1.c index 2f9924aea1f..7bd9b906235 100644 --- a/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/unroll-non-rect-1.c +++ b/libgomp/testsuite/libgomp.c-c++-common/loop-transforms/unroll-non-rect-1.c @@ -1,3 +1,5 @@ +/* { dg-additional-options { -Wall -Wno-unknown-pragmas } } */ + #include #include