From patchwork Fri Mar 4 13:51:52 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Thomas Schwinge X-Patchwork-Id: 51575 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 6E8233857C72 for ; Fri, 4 Mar 2022 13:52:41 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from esa4.mentor.iphmx.com (esa4.mentor.iphmx.com [68.232.137.252]) by sourceware.org (Postfix) with ESMTPS id 045DE3858D39 for ; Fri, 4 Mar 2022 13:52:01 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 045DE3858D39 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="5.90,155,1643702400"; d="scan'208,223";a="72707201" Received: from orw-gwy-02-in.mentorg.com ([192.94.38.167]) by esa4.mentor.iphmx.com with ESMTP; 04 Mar 2022 05:52:00 -0800 IronPort-SDR: +4mvpbxwxtDegsO8+ONCEfK7ztdOEy76BtTmtojG2VTxgSfZScKeJ6mm/JfxxLrlYAmnxTjXlg ppZffOCEVZOq0ILyFSdFdXLISctk1Z+no5tUcVSQlGGl8u0HyNrupiq+XxsLlf4mTi2AKDk1Zf Sr1bzAiGZk2Yux3ysxuy1brWWxPtos1GnO4Uk+TWwtb60rxk1wJKkYNl+pz/1SlzLJWqmqN5g8 RDy7Td4hwMmDRmMB7ostX0dhK8s8KToMwWMXBqwJIF8shm4mAMsl0Td7JrASfEZBQCC36E6VAk rMw= From: Thomas Schwinge To: Subject: Test '-fopt-info-omp-all' in 'libgomp.oacc-*/kernels-private-vars-*' References: <87fszrv4pt.fsf@euler.schwinge.homeip.net> <20210419122356.386d25b1@squid.athome> <87wnrryjg0.fsf@euler.schwinge.homeip.net> User-Agent: Notmuch/0.29.3+94~g74c3f1b (https://notmuchmail.org) Emacs/27.1 (x86_64-pc-linux-gnu) Date: Fri, 4 Mar 2022 14:51:52 +0100 Message-ID: <874k4domfb.fsf@euler.schwinge.homeip.net> MIME-Version: 1.0 X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: svr-ies-mbx-11.mgc.mentorg.com (139.181.222.11) To svr-ies-mbx-01.mgc.mentorg.com (139.181.222.1) X-Spam-Status: No, score=-11.0 required=5.0 tests=BAYES_00, GIT_PATCH_0, HEADER_FROM_DIFFERENT_DOMAINS, KAM_DMARC_STATUS, SCC_10_SHORT_WORD_LINES, SCC_5_SHORT_WORD_LINES, SPF_HELO_PASS, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham 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: , Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org Sender: "Gcc-patches" Hi! Pushed to master branch commit 07395f19dff610f03d1b1d30c8bd640f610c45dc "Test '-fopt-info-omp-all' in 'libgomp.oacc-*/kernels-private-vars-*'", see attached. Grüße Thomas ----------------- 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 From 07395f19dff610f03d1b1d30c8bd640f610c45dc Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Wed, 16 Feb 2022 15:44:27 +0100 Subject: [PATCH] Test '-fopt-info-omp-all' in 'libgomp.oacc-*/kernels-private-vars-*' libgomp/ * testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-local-worker-1.c: Test '-fopt-info-omp-all'. * testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-local-worker-2.c: Likewise. * testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-local-worker-3.c: Likewise. * testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-local-worker-4.c: Likewise. * testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-local-worker-5.c: Likewise. * testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-gang-1.c: Likewise. * testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-gang-2.c: Likewise. * testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-gang-3.c: Likewise. * testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-gang-4.c: Likewise. * testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-gang-5.c: Likewise. * testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-gang-6.c: Likewise. * testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-vector-1.c: Likewise. * testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-vector-2.c: Likewise. * testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-worker-1.c: Likewise. * testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-worker-2.c: Likewise. * testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-worker-3.c: Likewise. * testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-worker-4.c: Likewise. * testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-worker-5.c: Likewise. * testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-worker-6.c: Likewise. * testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-worker-7.c: Likewise. * testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-gang-1.f90: Likewise. * testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-gang-2.f90: Likewise. * testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-gang-3.f90: Likewise. * testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-gang-6.f90: Likewise. * testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-vector-1.f90: Likewise. * testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-vector-2.f90: Likewise. * testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-worker-1.f90: Likewise. * testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-worker-2.f90: Likewise. * testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-worker-3.f90: Likewise. * testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-worker-4.f90: Likewise. * testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-worker-5.f90: Likewise. * testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-worker-6.f90: Likewise. * testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-worker-7.f90: Likewise. --- .../kernels-private-vars-local-worker-1.c | 57 +++++++++++-------- .../kernels-private-vars-local-worker-2.c | 49 +++++++++------- .../kernels-private-vars-local-worker-3.c | 49 +++++++++------- .../kernels-private-vars-local-worker-4.c | 51 ++++++++++------- .../kernels-private-vars-local-worker-5.c | 49 +++++++++------- .../kernels-private-vars-loop-gang-1.c | 31 ++++++---- .../kernels-private-vars-loop-gang-2.c | 39 ++++++++----- .../kernels-private-vars-loop-gang-3.c | 39 ++++++++----- .../kernels-private-vars-loop-gang-4.c | 41 +++++++------ .../kernels-private-vars-loop-gang-5.c | 39 ++++++++----- .../kernels-private-vars-loop-gang-6.c | 39 ++++++++----- .../kernels-private-vars-loop-vector-1.c | 49 +++++++++------- .../kernels-private-vars-loop-vector-2.c | 43 ++++++++------ .../kernels-private-vars-loop-worker-1.c | 37 +++++++----- .../kernels-private-vars-loop-worker-2.c | 45 +++++++++------ .../kernels-private-vars-loop-worker-3.c | 57 +++++++++++-------- .../kernels-private-vars-loop-worker-4.c | 49 +++++++++------- .../kernels-private-vars-loop-worker-5.c | 51 ++++++++++------- .../kernels-private-vars-loop-worker-6.c | 49 +++++++++------- .../kernels-private-vars-loop-worker-7.c | 49 +++++++++------- .../kernels-private-vars-loop-gang-1.f90 | 23 +++++--- .../kernels-private-vars-loop-gang-2.f90 | 27 ++++++--- .../kernels-private-vars-loop-gang-3.f90 | 27 ++++++--- .../kernels-private-vars-loop-gang-6.f90 | 27 ++++++--- .../kernels-private-vars-loop-vector-1.f90 | 37 +++++++----- .../kernels-private-vars-loop-vector-2.f90 | 31 ++++++---- .../kernels-private-vars-loop-worker-1.f90 | 27 ++++++--- .../kernels-private-vars-loop-worker-2.f90 | 31 ++++++---- .../kernels-private-vars-loop-worker-3.f90 | 41 +++++++------ .../kernels-private-vars-loop-worker-4.f90 | 35 +++++++----- .../kernels-private-vars-loop-worker-5.f90 | 37 +++++++----- .../kernels-private-vars-loop-worker-6.f90 | 35 +++++++----- .../kernels-private-vars-loop-worker-7.f90 | 35 +++++++----- 33 files changed, 811 insertions(+), 514 deletions(-) diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-local-worker-1.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-local-worker-1.c index f28513dd208..acbeb65273f 100644 --- a/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-local-worker-1.c +++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-local-worker-1.c @@ -1,14 +1,22 @@ -/* { dg-additional-options "-fopt-info-note-omp" } - { dg-additional-options "--param=openacc-privatization=noisy" } - { dg-additional-options "-foffload=-fopt-info-note-omp" } - { dg-additional-options "-foffload=--param=openacc-privatization=noisy" } - for testing/documenting aspects of that functionality. */ - -#include - /* Test of worker-private variables declared in a local scope, broadcasting to vector-partitioned mode. Back-to-back worker loops. */ +/* { dg-additional-options "-fopt-info-omp-all" } + { dg-additional-options "-foffload=-fopt-info-omp-all" } */ + +/* { dg-additional-options "--param=openacc-privatization=noisy" } + { dg-additional-options "-foffload=--param=openacc-privatization=noisy" } */ + +/* It's only with Tcl 8.5 (released in 2007) that "the variable 'varName' + passed to 'incr' may be unset, and in that case, it will be set to [...]", + so to maintain compatibility with earlier Tcl releases, we manually + initialize counter variables: + { dg-line l_dummy[variable c_compute 0 c_loop_i 0 c_loop_j 0 c_loop_k 0] } + { dg-message "dummy" "" { target iN-VAl-Id } l_dummy } to avoid + "WARNING: dg-line var l_dummy defined, but not used". */ + +#include + int main (int argc, char* argv[]) { @@ -17,46 +25,47 @@ main (int argc, char* argv[]) for (i = 0; i < 32 * 32 * 32; i++) arr[i] = i; - #pragma acc kernels copy(arr) - /* { dg-note {variable 'j' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ + #pragma acc kernels copy(arr) /* { dg-line l_compute[incr c_compute] } */ + /* { dg-note {variable 'j' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_compute$c_compute } */ { int j; - #pragma acc loop gang(num:32) - /* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ + #pragma acc loop gang(num:32) /* { dg-line l_loop_i[incr c_loop_i] } */ + /* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } */ for (i = 0; i < 32; i++) { - #pragma acc loop worker(num:32) - /* { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ - /* { dg-note {variable 'k' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-2 } */ - /* { dg-note {variable 'x' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-3 } */ + #pragma acc loop worker(num:32) /* { dg-line l_loop_j[incr c_loop_j] } */ + /* { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } */ + /* { dg-note {variable 'k' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } */ + /* { dg-note {variable 'x' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } */ for (j = 0; j < 32; j++) { int k; int x = i ^ j * 3; - #pragma acc loop vector(length:32) - /* { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ + #pragma acc loop vector(length:32) /* { dg-line l_loop_k[incr c_loop_k] } */ + /* { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_k$c_loop_k } */ for (k = 0; k < 32; k++) arr[i * 1024 + j * 32 + k] += x * k; } - #pragma acc loop worker(num:32) - /* { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ - /* { dg-note {variable 'k' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-2 } */ - /* { dg-note {variable 'x' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-3 } */ + #pragma acc loop worker(num:32) /* { dg-line l_loop_j[incr c_loop_j] } */ + /* { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } */ + /* { dg-note {variable 'k' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } */ + /* { dg-note {variable 'x' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } */ for (j = 0; j < 32; j++) { int k; int x = i | j * 5; - #pragma acc loop vector(length:32) - /* { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ + #pragma acc loop vector(length:32) /* { dg-line l_loop_k[incr c_loop_k] } */ + /* { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_k$c_loop_k } */ for (k = 0; k < 32; k++) arr[i * 1024 + j * 32 + k] += x * k; } } } + /* { dg-optimized {assigned OpenACC seq loop parallelism} {} { target *-*-* } l_compute$c_compute } */ for (i = 0; i < 32; i++) for (int j = 0; j < 32; j++) diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-local-worker-2.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-local-worker-2.c index 21f25114d68..2558a68eb94 100644 --- a/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-local-worker-2.c +++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-local-worker-2.c @@ -1,14 +1,22 @@ -/* { dg-additional-options "-fopt-info-note-omp" } - { dg-additional-options "--param=openacc-privatization=noisy" } - { dg-additional-options "-foffload=-fopt-info-note-omp" } - { dg-additional-options "-foffload=--param=openacc-privatization=noisy" } - for testing/documenting aspects of that functionality. */ - -#include - /* Test of worker-private variables declared in a local scope, broadcasting to vector-partitioned mode. Successive vector loops. */ +/* { dg-additional-options "-fopt-info-omp-all" } + { dg-additional-options "-foffload=-fopt-info-omp-all" } */ + +/* { dg-additional-options "--param=openacc-privatization=noisy" } + { dg-additional-options "-foffload=--param=openacc-privatization=noisy" } */ + +/* It's only with Tcl 8.5 (released in 2007) that "the variable 'varName' + passed to 'incr' may be unset, and in that case, it will be set to [...]", + so to maintain compatibility with earlier Tcl releases, we manually + initialize counter variables: + { dg-line l_dummy[variable c_compute 0 c_loop_i 0 c_loop_j 0 c_loop_k 0] } + { dg-message "dummy" "" { target iN-VAl-Id } l_dummy } to avoid + "WARNING: dg-line var l_dummy defined, but not used". */ + +#include + int main (int argc, char* argv[]) { @@ -17,38 +25,39 @@ main (int argc, char* argv[]) for (i = 0; i < 32 * 32 * 32; i++) arr[i] = i; - #pragma acc kernels copy(arr) - /* { dg-note {variable 'j' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ + #pragma acc kernels copy(arr) /* { dg-line l_compute[incr c_compute] } */ + /* { dg-note {variable 'j' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_compute$c_compute } */ { int j; - #pragma acc loop gang(num:32) - /* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ + #pragma acc loop gang(num:32) /* { dg-line l_loop_i[incr c_loop_i] } */ + /* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } */ for (i = 0; i < 32; i++) { - #pragma acc loop worker(num:32) - /* { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ - /* { dg-note {variable 'k' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-2 } */ - /* { dg-note {variable 'x' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-3 } */ + #pragma acc loop worker(num:32) /* { dg-line l_loop_j[incr c_loop_j] } */ + /* { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } */ + /* { dg-note {variable 'k' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } */ + /* { dg-note {variable 'x' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } */ for (j = 0; j < 32; j++) { int k; int x = i ^ j * 3; - #pragma acc loop vector(length:32) - /* { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ + #pragma acc loop vector(length:32) /* { dg-line l_loop_k[incr c_loop_k] } */ + /* { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_k$c_loop_k } */ for (k = 0; k < 32; k++) arr[i * 1024 + j * 32 + k] += x * k; x = i | j * 5; - #pragma acc loop vector(length:32) - /* { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ + #pragma acc loop vector(length:32) /* { dg-line l_loop_k[incr c_loop_k] } */ + /* { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_k$c_loop_k } */ for (k = 0; k < 32; k++) arr[i * 1024 + j * 32 + k] += x * k; } } } + /* { dg-optimized {assigned OpenACC seq loop parallelism} {} { target *-*-* } l_compute$c_compute } */ for (i = 0; i < 32; i++) for (int j = 0; j < 32; j++) diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-local-worker-3.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-local-worker-3.c index 8b4cde87ce9..b2a208c163f 100644 --- a/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-local-worker-3.c +++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-local-worker-3.c @@ -1,14 +1,22 @@ -/* { dg-additional-options "-fopt-info-note-omp" } - { dg-additional-options "--param=openacc-privatization=noisy" } - { dg-additional-options "-foffload=-fopt-info-note-omp" } - { dg-additional-options "-foffload=--param=openacc-privatization=noisy" } - for testing/documenting aspects of that functionality. */ - -#include - /* Test of worker-private variables declared in a local scope, broadcasting to vector-partitioned mode. Aggregate worker variable. */ +/* { dg-additional-options "-fopt-info-omp-all" } + { dg-additional-options "-foffload=-fopt-info-omp-all" } */ + +/* { dg-additional-options "--param=openacc-privatization=noisy" } + { dg-additional-options "-foffload=--param=openacc-privatization=noisy" } */ + +/* It's only with Tcl 8.5 (released in 2007) that "the variable 'varName' + passed to 'incr' may be unset, and in that case, it will be set to [...]", + so to maintain compatibility with earlier Tcl releases, we manually + initialize counter variables: + { dg-line l_dummy[variable c_compute 0 c_loop_i 0 c_loop_j 0 c_loop_k 0] } + { dg-message "dummy" "" { target iN-VAl-Id } l_dummy } to avoid + "WARNING: dg-line var l_dummy defined, but not used". */ + +#include + typedef struct { int x, y; @@ -22,19 +30,19 @@ main (int argc, char* argv[]) for (i = 0; i < 32 * 32 * 32; i++) arr[i] = i; - #pragma acc kernels copy(arr) - /* { dg-note {variable 'j' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ + #pragma acc kernels copy(arr) /* { dg-line l_compute[incr c_compute] } */ + /* { dg-note {variable 'j' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_compute$c_compute } */ { int j; - #pragma acc loop gang(num:32) - /* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ + #pragma acc loop gang(num:32) /* { dg-line l_loop_i[incr c_loop_i] } */ + /* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } */ for (i = 0; i < 32; i++) { - #pragma acc loop worker(num:32) - /* { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ - /* { dg-note {variable 'k' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-2 } */ - /* { dg-note {variable 'pt' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-3 } */ + #pragma acc loop worker(num:32) /* { dg-line l_loop_j[incr c_loop_j] } */ + /* { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } */ + /* { dg-note {variable 'k' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } */ + /* { dg-note {variable 'pt' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } */ for (j = 0; j < 32; j++) { int k; @@ -43,18 +51,19 @@ main (int argc, char* argv[]) pt.x = i ^ j * 3; pt.y = i | j * 5; - #pragma acc loop vector(length:32) - /* { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ + #pragma acc loop vector(length:32) /* { dg-line l_loop_k[incr c_loop_k] } */ + /* { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_k$c_loop_k } */ for (k = 0; k < 32; k++) arr[i * 1024 + j * 32 + k] += pt.x * k; - #pragma acc loop vector(length:32) - /* { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ + #pragma acc loop vector(length:32) /* { dg-line l_loop_k[incr c_loop_k] } */ + /* { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_k$c_loop_k } */ for (k = 0; k < 32; k++) arr[i * 1024 + j * 32 + k] += pt.y * k; } } } + /* { dg-optimized {assigned OpenACC seq loop parallelism} {} { target *-*-* } l_compute$c_compute } */ for (i = 0; i < 32; i++) for (int j = 0; j < 32; j++) diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-local-worker-4.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-local-worker-4.c index a658d167236..46c395620fe 100644 --- a/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-local-worker-4.c +++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-local-worker-4.c @@ -1,14 +1,22 @@ -/* { dg-additional-options "-fopt-info-note-omp" } - { dg-additional-options "--param=openacc-privatization=noisy" } - { dg-additional-options "-foffload=-fopt-info-note-omp" } - { dg-additional-options "-foffload=--param=openacc-privatization=noisy" } - for testing/documenting aspects of that functionality. */ - -#include - /* Test of worker-private variables declared in a local scope, broadcasting to vector-partitioned mode. Addressable worker variable. */ +/* { dg-additional-options "-fopt-info-omp-all" } + { dg-additional-options "-foffload=-fopt-info-omp-all" } */ + +/* { dg-additional-options "--param=openacc-privatization=noisy" } + { dg-additional-options "-foffload=--param=openacc-privatization=noisy" } */ + +/* It's only with Tcl 8.5 (released in 2007) that "the variable 'varName' + passed to 'incr' may be unset, and in that case, it will be set to [...]", + so to maintain compatibility with earlier Tcl releases, we manually + initialize counter variables: + { dg-line l_dummy[variable c_compute 0 c_loop_i 0 c_loop_j 0 c_loop_k 0] } + { dg-message "dummy" "" { target iN-VAl-Id } l_dummy } to avoid + "WARNING: dg-line var l_dummy defined, but not used". */ + +#include + typedef struct { int x, y; @@ -22,20 +30,20 @@ main (int argc, char* argv[]) for (i = 0; i < 32 * 32 * 32; i++) arr[i] = i; - #pragma acc kernels copy(arr) - /* { dg-note {variable 'j' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ + #pragma acc kernels copy(arr) /* { dg-line l_compute[incr c_compute] } */ + /* { dg-note {variable 'j' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_compute$c_compute } */ { int j; - #pragma acc loop gang(num:32) - /* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ + #pragma acc loop gang(num:32) /* { dg-line l_loop_i[incr c_loop_i] } */ + /* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } */ for (i = 0; i < 32; i++) { - #pragma acc loop worker(num:32) - /* { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ - /* { dg-note {variable 'k' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-2 } */ - /* { dg-note {variable 'pt' declared in block is candidate for adjusting OpenACC privatization level} "" { target *-*-* } .-3 } */ - /* { dg-note {variable 'ptp' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-4 } */ + #pragma acc loop worker(num:32) /* { dg-line l_loop_j[incr c_loop_j] } */ + /* { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } */ + /* { dg-note {variable 'k' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } */ + /* { dg-note {variable 'pt' declared in block is candidate for adjusting OpenACC privatization level} {} { target *-*-* } l_loop_j$c_loop_j } */ + /* { dg-note {variable 'ptp' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } */ for (j = 0; j < 32; j++) { int k; @@ -45,20 +53,21 @@ main (int argc, char* argv[]) pt.x = i ^ j * 3; - #pragma acc loop vector(length:32) - /* { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ + #pragma acc loop vector(length:32) /* { dg-line l_loop_k[incr c_loop_k] } */ + /* { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_k$c_loop_k } */ for (k = 0; k < 32; k++) arr[i * 1024 + j * 32 + k] += ptp->x * k; ptp->y = i | j * 5; - #pragma acc loop vector(length:32) - /* { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ + #pragma acc loop vector(length:32) /* { dg-line l_loop_k[incr c_loop_k] } */ + /* { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_k$c_loop_k } */ for (k = 0; k < 32; k++) arr[i * 1024 + j * 32 + k] += pt.y * k; } } } + /* { dg-optimized {assigned OpenACC seq loop parallelism} {} { target *-*-* } l_compute$c_compute } */ for (i = 0; i < 32; i++) for (int j = 0; j < 32; j++) diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-local-worker-5.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-local-worker-5.c index b82b9bf210a..4b5a15e6ad4 100644 --- a/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-local-worker-5.c +++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-local-worker-5.c @@ -1,14 +1,22 @@ -/* { dg-additional-options "-fopt-info-note-omp" } - { dg-additional-options "--param=openacc-privatization=noisy" } - { dg-additional-options "-foffload=-fopt-info-note-omp" } - { dg-additional-options "-foffload=--param=openacc-privatization=noisy" } - for testing/documenting aspects of that functionality. */ - -#include - /* Test of worker-private variables declared in a local scope, broadcasting to vector-partitioned mode. Array worker variable. */ +/* { dg-additional-options "-fopt-info-omp-all" } + { dg-additional-options "-foffload=-fopt-info-omp-all" } */ + +/* { dg-additional-options "--param=openacc-privatization=noisy" } + { dg-additional-options "-foffload=--param=openacc-privatization=noisy" } */ + +/* It's only with Tcl 8.5 (released in 2007) that "the variable 'varName' + passed to 'incr' may be unset, and in that case, it will be set to [...]", + so to maintain compatibility with earlier Tcl releases, we manually + initialize counter variables: + { dg-line l_dummy[variable c_compute 0 c_loop_i 0 c_loop_j 0 c_loop_k 0] } + { dg-message "dummy" "" { target iN-VAl-Id } l_dummy } to avoid + "WARNING: dg-line var l_dummy defined, but not used". */ + +#include + int main (int argc, char* argv[]) { @@ -17,19 +25,19 @@ main (int argc, char* argv[]) for (i = 0; i < 32 * 32 * 32; i++) arr[i] = i; - #pragma acc kernels copy(arr) - /* { dg-note {variable 'j' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ + #pragma acc kernels copy(arr) /* { dg-line l_compute[incr c_compute] } */ + /* { dg-note {variable 'j' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_compute$c_compute } */ { int j; - #pragma acc loop gang(num:32) - /* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ + #pragma acc loop gang(num:32) /* { dg-line l_loop_i[incr c_loop_i] } */ + /* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } */ for (i = 0; i < 32; i++) { - #pragma acc loop worker(num:32) - /* { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ - /* { dg-note {variable 'k' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-2 } */ - /* { dg-note {variable 'pt' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-3 } */ + #pragma acc loop worker(num:32) /* { dg-line l_loop_j[incr c_loop_j] } */ + /* { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } */ + /* { dg-note {variable 'k' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } */ + /* { dg-note {variable 'pt' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } */ for (j = 0; j < 32; j++) { int k; @@ -37,20 +45,21 @@ main (int argc, char* argv[]) pt[0] = i ^ j * 3; - #pragma acc loop vector(length:32) - /* { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ + #pragma acc loop vector(length:32) /* { dg-line l_loop_k[incr c_loop_k] } */ + /* { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_k$c_loop_k } */ for (k = 0; k < 32; k++) arr[i * 1024 + j * 32 + k] += pt[0] * k; pt[1] = i | j * 5; - #pragma acc loop vector(length:32) - /* { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ + #pragma acc loop vector(length:32) /* { dg-line l_loop_k[incr c_loop_k] } */ + /* { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_k$c_loop_k } */ for (k = 0; k < 32; k++) arr[i * 1024 + j * 32 + k] += pt[1] * k; } } } + /* { dg-optimized {assigned OpenACC seq loop parallelism} {} { target *-*-* } l_compute$c_compute } */ for (i = 0; i < 32; i++) for (int j = 0; j < 32; j++) diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-gang-1.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-gang-1.c index 38d89c726ca..4a824941427 100644 --- a/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-gang-1.c +++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-gang-1.c @@ -1,12 +1,20 @@ -/* { dg-additional-options "-fopt-info-note-omp" } - { dg-additional-options "--param=openacc-privatization=noisy" } - { dg-additional-options "-foffload=-fopt-info-note-omp" } - { dg-additional-options "-foffload=--param=openacc-privatization=noisy" } - for testing/documenting aspects of that functionality. */ +/* Test of gang-private variables declared on loop directive. */ -#include +/* { dg-additional-options "-fopt-info-omp-all" } + { dg-additional-options "-foffload=-fopt-info-omp-all" } */ -/* Test of gang-private variables declared on loop directive. */ +/* { dg-additional-options "--param=openacc-privatization=noisy" } + { dg-additional-options "-foffload=--param=openacc-privatization=noisy" } */ + +/* It's only with Tcl 8.5 (released in 2007) that "the variable 'varName' + passed to 'incr' may be unset, and in that case, it will be set to [...]", + so to maintain compatibility with earlier Tcl releases, we manually + initialize counter variables: + { dg-line l_dummy[variable c_compute 0 c_loop_i 0 c_loop_j 0 c_loop_k 0] } + { dg-message "dummy" "" { target iN-VAl-Id } l_dummy } to avoid + "WARNING: dg-line var l_dummy defined, but not used". */ + +#include int main (int argc, char* argv[]) @@ -16,17 +24,18 @@ main (int argc, char* argv[]) for (i = 0; i < 32; i++) arr[i] = i; - #pragma acc kernels copy(arr) + #pragma acc kernels copy(arr) /* { dg-line l_compute[incr c_compute] } */ { - #pragma acc loop gang(num:32) private(x) - /* { dg-note {variable 'x' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ - /* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-2 } */ + #pragma acc loop gang(num:32) private(x) /* { dg-line l_loop_i[incr c_loop_i] } */ + /* { dg-note {variable 'x' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } */ + /* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } */ for (i = 0; i < 32; i++) { x = i * 2; arr[i] += x; } } + /* { dg-optimized {assigned OpenACC seq loop parallelism} {} { target *-*-* } l_compute$c_compute } */ for (i = 0; i < 32; i++) assert (arr[i] == i * 3); diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-gang-2.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-gang-2.c index 62dd12fb790..039053f3c86 100644 --- a/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-gang-2.c +++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-gang-2.c @@ -1,14 +1,22 @@ -/* { dg-additional-options "-fopt-info-note-omp" } - { dg-additional-options "--param=openacc-privatization=noisy" } - { dg-additional-options "-foffload=-fopt-info-note-omp" } - { dg-additional-options "-foffload=--param=openacc-privatization=noisy" } - for testing/documenting aspects of that functionality. */ - -#include - /* Test of gang-private variables declared on loop directive, with broadcasting to partitioned workers. */ +/* { dg-additional-options "-fopt-info-omp-all" } + { dg-additional-options "-foffload=-fopt-info-omp-all" } */ + +/* { dg-additional-options "--param=openacc-privatization=noisy" } + { dg-additional-options "-foffload=--param=openacc-privatization=noisy" } */ + +/* It's only with Tcl 8.5 (released in 2007) that "the variable 'varName' + passed to 'incr' may be unset, and in that case, it will be set to [...]", + so to maintain compatibility with earlier Tcl releases, we manually + initialize counter variables: + { dg-line l_dummy[variable c_compute 0 c_loop_i 0 c_loop_j 0 c_loop_k 0] } + { dg-message "dummy" "" { target iN-VAl-Id } l_dummy } to avoid + "WARNING: dg-line var l_dummy defined, but not used". */ + +#include + int main (int argc, char* argv[]) { @@ -17,22 +25,23 @@ main (int argc, char* argv[]) for (i = 0; i < 32 * 32; i++) arr[i] = i; - #pragma acc kernels copy(arr) + #pragma acc kernels copy(arr) /* { dg-line l_compute[incr c_compute] } */ { - #pragma acc loop gang(num:32) private(x) - /* { dg-note {variable 'x' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ - /* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-2 } */ - /* { dg-note {variable 'j' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-3 } */ + #pragma acc loop gang(num:32) private(x) /* { dg-line l_loop_i[incr c_loop_i] } */ + /* { dg-note {variable 'x' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } */ + /* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } */ + /* { dg-note {variable 'j' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } */ for (i = 0; i < 32; i++) { x = i * 2; - #pragma acc loop worker(num:32) - /* { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ + #pragma acc loop worker(num:32) /* { dg-line l_loop_j[incr c_loop_j] } */ + /* { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } */ for (int j = 0; j < 32; j++) arr[i * 32 + j] += x; } } + /* { dg-optimized {assigned OpenACC seq loop parallelism} {} { target *-*-* } l_compute$c_compute } */ for (i = 0; i < 32 * 32; i++) assert (arr[i] == i + (i / 32) * 2); diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-gang-3.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-gang-3.c index c22c3b43e31..2b89659a007 100644 --- a/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-gang-3.c +++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-gang-3.c @@ -1,14 +1,22 @@ -/* { dg-additional-options "-fopt-info-note-omp" } - { dg-additional-options "--param=openacc-privatization=noisy" } - { dg-additional-options "-foffload=-fopt-info-note-omp" } - { dg-additional-options "-foffload=--param=openacc-privatization=noisy" } - for testing/documenting aspects of that functionality. */ - -#include - /* Test of gang-private variables declared on loop directive, with broadcasting to partitioned vectors. */ +/* { dg-additional-options "-fopt-info-omp-all" } + { dg-additional-options "-foffload=-fopt-info-omp-all" } */ + +/* { dg-additional-options "--param=openacc-privatization=noisy" } + { dg-additional-options "-foffload=--param=openacc-privatization=noisy" } */ + +/* It's only with Tcl 8.5 (released in 2007) that "the variable 'varName' + passed to 'incr' may be unset, and in that case, it will be set to [...]", + so to maintain compatibility with earlier Tcl releases, we manually + initialize counter variables: + { dg-line l_dummy[variable c_compute 0 c_loop_i 0 c_loop_j 0 c_loop_k 0] } + { dg-message "dummy" "" { target iN-VAl-Id } l_dummy } to avoid + "WARNING: dg-line var l_dummy defined, but not used". */ + +#include + int main (int argc, char* argv[]) { @@ -17,22 +25,23 @@ main (int argc, char* argv[]) for (i = 0; i < 32 * 32; i++) arr[i] = i; - #pragma acc kernels copy(arr) + #pragma acc kernels copy(arr) /* { dg-line l_compute[incr c_compute] } */ { - #pragma acc loop gang(num:32) private(x) - /* { dg-note {variable 'x' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ - /* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-2 } */ - /* { dg-note {variable 'j' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-3 } */ + #pragma acc loop gang(num:32) private(x) /* { dg-line l_loop_i[incr c_loop_i] } */ + /* { dg-note {variable 'x' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } */ + /* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } */ + /* { dg-note {variable 'j' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } */ for (i = 0; i < 32; i++) { x = i * 2; - #pragma acc loop vector(length:32) - /* { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ + #pragma acc loop vector(length:32) /* { dg-line l_loop_j[incr c_loop_j] } */ + /* { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } */ for (int j = 0; j < 32; j++) arr[i * 32 + j] += x; } } + /* { dg-optimized {assigned OpenACC seq loop parallelism} {} { target *-*-* } l_compute$c_compute } */ for (i = 0; i < 32 * 32; i++) assert (arr[i] == i + (i / 32) * 2); diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-gang-4.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-gang-4.c index 27a8e804129..70760705925 100644 --- a/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-gang-4.c +++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-gang-4.c @@ -1,14 +1,22 @@ -/* { dg-additional-options "-fopt-info-note-omp" } - { dg-additional-options "--param=openacc-privatization=noisy" } - { dg-additional-options "-foffload=-fopt-info-note-omp" } - { dg-additional-options "-foffload=--param=openacc-privatization=noisy" } - for testing/documenting aspects of that functionality. */ - -#include - /* Test of gang-private addressable variable declared on loop directive, with broadcasting to partitioned workers. */ +/* { dg-additional-options "-fopt-info-omp-all" } + { dg-additional-options "-foffload=-fopt-info-omp-all" } */ + +/* { dg-additional-options "--param=openacc-privatization=noisy" } + { dg-additional-options "-foffload=--param=openacc-privatization=noisy" } */ + +/* It's only with Tcl 8.5 (released in 2007) that "the variable 'varName' + passed to 'incr' may be unset, and in that case, it will be set to [...]", + so to maintain compatibility with earlier Tcl releases, we manually + initialize counter variables: + { dg-line l_dummy[variable c_compute 0 c_loop_i 0 c_loop_j 0 c_loop_k 0] } + { dg-message "dummy" "" { target iN-VAl-Id } l_dummy } to avoid + "WARNING: dg-line var l_dummy defined, but not used". */ + +#include + int main (int argc, char* argv[]) { @@ -17,27 +25,28 @@ main (int argc, char* argv[]) for (i = 0; i < 32 * 32; i++) arr[i] = i; - #pragma acc kernels copy(arr) + #pragma acc kernels copy(arr) /* { dg-line l_compute[incr c_compute] } */ { - #pragma acc loop gang(num:32) private(x) - /* { dg-note {variable 'x' in 'private' clause is candidate for adjusting OpenACC privatization level} "" { target *-*-* } .-1 } */ - /* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-2 } */ - /* { dg-note {variable 'p' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-3 } */ - /* { dg-note {variable 'j' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-4 } */ + #pragma acc loop gang(num:32) private(x) /* { dg-line l_loop_i[incr c_loop_i] } */ + /* { dg-note {variable 'x' in 'private' clause is candidate for adjusting OpenACC privatization level} {} { target *-*-* } l_loop_i$c_loop_i } */ + /* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } */ + /* { dg-note {variable 'p' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } */ + /* { dg-note {variable 'j' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } */ for (i = 0; i < 32; i++) { int *p = &x; x = i * 2; - #pragma acc loop worker(num:32) - /* { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ + #pragma acc loop worker(num:32) /* { dg-line l_loop_j[incr c_loop_j] } */ + /* { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } */ for (int j = 0; j < 32; j++) arr[i * 32 + j] += x; (*p)--; } } + /* { dg-optimized {assigned OpenACC seq loop parallelism} {} { target *-*-* } l_compute$c_compute } */ for (i = 0; i < 32 * 32; i++) assert (arr[i] == i + (i / 32) * 2); diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-gang-5.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-gang-5.c index f570c222940..edf0e24af8b 100644 --- a/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-gang-5.c +++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-gang-5.c @@ -1,14 +1,22 @@ -/* { dg-additional-options "-fopt-info-note-omp" } - { dg-additional-options "--param=openacc-privatization=noisy" } - { dg-additional-options "-foffload=-fopt-info-note-omp" } - { dg-additional-options "-foffload=--param=openacc-privatization=noisy" } - for testing/documenting aspects of that functionality. */ - -#include - /* Test of gang-private array variable declared on loop directive, with broadcasting to partitioned workers. */ +/* { dg-additional-options "-fopt-info-omp-all" } + { dg-additional-options "-foffload=-fopt-info-omp-all" } */ + +/* { dg-additional-options "--param=openacc-privatization=noisy" } + { dg-additional-options "-foffload=--param=openacc-privatization=noisy" } */ + +/* It's only with Tcl 8.5 (released in 2007) that "the variable 'varName' + passed to 'incr' may be unset, and in that case, it will be set to [...]", + so to maintain compatibility with earlier Tcl releases, we manually + initialize counter variables: + { dg-line l_dummy[variable c_compute 0 c_loop_i 0 c_loop_j 0 c_loop_k 0] } + { dg-message "dummy" "" { target iN-VAl-Id } l_dummy } to avoid + "WARNING: dg-line var l_dummy defined, but not used". */ + +#include + int main (int argc, char* argv[]) { @@ -17,23 +25,24 @@ main (int argc, char* argv[]) for (i = 0; i < 32 * 32; i++) arr[i] = i; - #pragma acc kernels copy(arr) + #pragma acc kernels copy(arr) /* { dg-line l_compute[incr c_compute] } */ { - #pragma acc loop gang(num:32) private(x) - /* { dg-note {variable 'x' in 'private' clause is candidate for adjusting OpenACC privatization level} "" { target *-*-* } .-1 } */ - /* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-2 } */ - /* { dg-note {variable 'j' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-3 } */ + #pragma acc loop gang(num:32) private(x) /* { dg-line l_loop_i[incr c_loop_i] } */ + /* { dg-note {variable 'x' in 'private' clause is candidate for adjusting OpenACC privatization level} {} { target *-*-* } l_loop_i$c_loop_i } */ + /* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } */ + /* { dg-note {variable 'j' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } */ for (i = 0; i < 32; i++) { for (int j = 0; j < 8; j++) x[j] = j * 2; - #pragma acc loop worker(num:32) - /* { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ + #pragma acc loop worker(num:32) /* { dg-line l_loop_j[incr c_loop_j] } */ + /* { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } */ for (int j = 0; j < 32; j++) arr[i * 32 + j] += x[j % 8]; } } + /* { dg-optimized {assigned OpenACC seq loop parallelism} {} { target *-*-* } l_compute$c_compute } */ for (i = 0; i < 32 * 32; i++) assert (arr[i] == i + (i % 8) * 2); diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-gang-6.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-gang-6.c index 5b776f18f72..a2df33b767d 100644 --- a/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-gang-6.c +++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-gang-6.c @@ -1,14 +1,22 @@ -/* { dg-additional-options "-fopt-info-note-omp" } - { dg-additional-options "--param=openacc-privatization=noisy" } - { dg-additional-options "-foffload=-fopt-info-note-omp" } - { dg-additional-options "-foffload=--param=openacc-privatization=noisy" } - for testing/documenting aspects of that functionality. */ - -#include - /* Test of gang-private aggregate variable declared on loop directive, with broadcasting to partitioned workers. */ +/* { dg-additional-options "-fopt-info-omp-all" } + { dg-additional-options "-foffload=-fopt-info-omp-all" } */ + +/* { dg-additional-options "--param=openacc-privatization=noisy" } + { dg-additional-options "-foffload=--param=openacc-privatization=noisy" } */ + +/* It's only with Tcl 8.5 (released in 2007) that "the variable 'varName' + passed to 'incr' may be unset, and in that case, it will be set to [...]", + so to maintain compatibility with earlier Tcl releases, we manually + initialize counter variables: + { dg-line l_dummy[variable c_compute 0 c_loop_i 0 c_loop_j 0 c_loop_k 0] } + { dg-message "dummy" "" { target iN-VAl-Id } l_dummy } to avoid + "WARNING: dg-line var l_dummy defined, but not used". */ + +#include + typedef struct { int x, y, z; int attr[13]; @@ -23,12 +31,12 @@ main (int argc, char* argv[]) for (i = 0; i < 32 * 32; i++) arr[i] = i; - #pragma acc kernels copy(arr) + #pragma acc kernels copy(arr) /* { dg-line l_compute[incr c_compute] } */ { - #pragma acc loop gang private(pt) - /* { dg-note {variable 'pt' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ - /* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-2 } */ - /* { dg-note {variable 'j' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-3 } */ + #pragma acc loop gang private(pt) /* { dg-line l_loop_i[incr c_loop_i] } */ + /* { dg-note {variable 'pt' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } */ + /* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } */ + /* { dg-note {variable 'j' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } */ for (i = 0; i < 32; i++) { pt.x = i; @@ -36,12 +44,13 @@ main (int argc, char* argv[]) pt.z = i * 4; pt.attr[5] = i * 6; - #pragma acc loop worker - /* { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ + #pragma acc loop worker /* { dg-line l_loop_j[incr c_loop_j] } */ + /* { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } */ for (int j = 0; j < 32; j++) arr[i * 32 + j] += pt.x + pt.y + pt.z + pt.attr[5]; } } + /* { dg-optimized {assigned OpenACC seq loop parallelism} {} { target *-*-* } l_compute$c_compute } */ for (i = 0; i < 32 * 32; i++) assert (arr[i] == i + (i / 32) * 13); diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-vector-1.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-vector-1.c index 696da0f204f..51c1de53414 100644 --- a/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-vector-1.c +++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-vector-1.c @@ -1,12 +1,20 @@ -/* { dg-additional-options "-fopt-info-note-omp" } - { dg-additional-options "--param=openacc-privatization=noisy" } - { dg-additional-options "-foffload=-fopt-info-note-omp" } - { dg-additional-options "-foffload=--param=openacc-privatization=noisy" } - for testing/documenting aspects of that functionality. */ +/* Test of vector-private variables declared on loop directive. */ -#include +/* { dg-additional-options "-fopt-info-omp-all" } + { dg-additional-options "-foffload=-fopt-info-omp-all" } */ -/* Test of vector-private variables declared on loop directive. */ +/* { dg-additional-options "--param=openacc-privatization=noisy" } + { dg-additional-options "-foffload=--param=openacc-privatization=noisy" } */ + +/* It's only with Tcl 8.5 (released in 2007) that "the variable 'varName' + passed to 'incr' may be unset, and in that case, it will be set to [...]", + so to maintain compatibility with earlier Tcl releases, we manually + initialize counter variables: + { dg-line l_dummy[variable c_compute 0 c_loop_i 0 c_loop_j 0 c_loop_k 0] } + { dg-message "dummy" "" { target iN-VAl-Id } l_dummy } to avoid + "WARNING: dg-line var l_dummy defined, but not used". */ + +#include int main (int argc, char* argv[]) @@ -16,34 +24,34 @@ main (int argc, char* argv[]) for (i = 0; i < 32 * 32 * 32; i++) arr[i] = i; - #pragma acc kernels copy(arr) - /* { dg-note {variable 'j' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ + #pragma acc kernels copy(arr) /* { dg-line l_compute[incr c_compute] } */ + /* { dg-note {variable 'j' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_compute$c_compute } */ { int j; - #pragma acc loop gang(num:32) - /* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ + #pragma acc loop gang(num:32) /* { dg-line l_loop_i[incr c_loop_i] } */ + /* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } */ for (i = 0; i < 32; i++) { - #pragma acc loop worker(num:32) - /* { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ - /* { dg-note {variable 'k' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-2 } */ + #pragma acc loop worker(num:32) /* { dg-line l_loop_j[incr c_loop_j] } */ + /* { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } */ + /* { dg-note {variable 'k' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } */ for (j = 0; j < 32; j++) { int k; - #pragma acc loop vector(length:32) private(x) - /* { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ - /* { dg-note {variable 'x' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-2 } */ + #pragma acc loop vector(length:32) private(x) /* { dg-line l_loop_k[incr c_loop_k] } */ + /* { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_k$c_loop_k } */ + /* { dg-note {variable 'x' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_k$c_loop_k } */ for (k = 0; k < 32; k++) { x = i ^ j * 3; arr[i * 1024 + j * 32 + k] += x * k; } - #pragma acc loop vector(length:32) private(x) - /* { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ - /* { dg-note {variable 'x' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-2 } */ + #pragma acc loop vector(length:32) private(x) /* { dg-line l_loop_k[incr c_loop_k] } */ + /* { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_k$c_loop_k } */ + /* { dg-note {variable 'x' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_k$c_loop_k } */ for (k = 0; k < 32; k++) { x = i | j * 5; @@ -52,6 +60,7 @@ main (int argc, char* argv[]) } } } + /* { dg-optimized {assigned OpenACC seq loop parallelism} {} { target *-*-* } l_compute$c_compute } */ for (i = 0; i < 32; i++) for (int j = 0; j < 32; j++) diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-vector-2.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-vector-2.c index 2e3b635b023..cb90eaab99d 100644 --- a/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-vector-2.c +++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-vector-2.c @@ -1,12 +1,20 @@ -/* { dg-additional-options "-fopt-info-note-omp" } - { dg-additional-options "--param=openacc-privatization=noisy" } - { dg-additional-options "-foffload=-fopt-info-note-omp" } - { dg-additional-options "-foffload=--param=openacc-privatization=noisy" } - for testing/documenting aspects of that functionality. */ +/* Test of vector-private variables declared on loop directive. Array type. */ -#include +/* { dg-additional-options "-fopt-info-omp-all" } + { dg-additional-options "-foffload=-fopt-info-omp-all" } */ -/* Test of vector-private variables declared on loop directive. Array type. */ +/* { dg-additional-options "--param=openacc-privatization=noisy" } + { dg-additional-options "-foffload=--param=openacc-privatization=noisy" } */ + +/* It's only with Tcl 8.5 (released in 2007) that "the variable 'varName' + passed to 'incr' may be unset, and in that case, it will be set to [...]", + so to maintain compatibility with earlier Tcl releases, we manually + initialize counter variables: + { dg-line l_dummy[variable c_compute 0 c_loop_i 0 c_loop_j 0 c_loop_k 0] } + { dg-message "dummy" "" { target iN-VAl-Id } l_dummy } to avoid + "WARNING: dg-line var l_dummy defined, but not used". */ + +#include int main (int argc, char* argv[]) @@ -16,25 +24,25 @@ main (int argc, char* argv[]) for (i = 0; i < 32 * 32 * 32; i++) arr[i] = i; - #pragma acc kernels copy(arr) - /* { dg-note {variable 'j' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ + #pragma acc kernels copy(arr) /* { dg-line l_compute[incr c_compute] } */ + /* { dg-note {variable 'j' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_compute$c_compute } */ { int j; - #pragma acc loop gang(num:32) - /* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ + #pragma acc loop gang(num:32) /* { dg-line l_loop_i[incr c_loop_i] } */ + /* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } */ for (i = 0; i < 32; i++) { - #pragma acc loop worker(num:32) - /* { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ - /* { dg-note {variable 'k' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-2 } */ + #pragma acc loop worker(num:32) /* { dg-line l_loop_j[incr c_loop_j] } */ + /* { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } */ + /* { dg-note {variable 'k' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } */ for (j = 0; j < 32; j++) { int k; - #pragma acc loop vector(length:32) private(pt) - /* { dg-note {variable 'pt' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ - /* { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-2 } */ + #pragma acc loop vector(length:32) private(pt) /* { dg-line l_loop_k[incr c_loop_k] } */ + /* { dg-note {variable 'pt' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_k$c_loop_k } */ + /* { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_k$c_loop_k } */ for (k = 0; k < 32; k++) { pt[0] = i ^ j * 3; @@ -45,6 +53,7 @@ main (int argc, char* argv[]) } } } + /* { dg-optimized {assigned OpenACC seq loop parallelism} {} { target *-*-* } l_compute$c_compute } */ for (i = 0; i < 32; i++) for (int j = 0; j < 32; j++) diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-worker-1.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-worker-1.c index 1aedc7964e2..54e1c93714b 100644 --- a/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-worker-1.c +++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-worker-1.c @@ -1,12 +1,20 @@ -/* { dg-additional-options "-fopt-info-note-omp" } - { dg-additional-options "--param=openacc-privatization=noisy" } - { dg-additional-options "-foffload=-fopt-info-note-omp" } - { dg-additional-options "-foffload=--param=openacc-privatization=noisy" } - for testing/documenting aspects of that functionality. */ +/* Test of worker-private variables declared on a loop directive. */ -#include +/* { dg-additional-options "-fopt-info-omp-all" } + { dg-additional-options "-foffload=-fopt-info-omp-all" } */ -/* Test of worker-private variables declared on a loop directive. */ +/* { dg-additional-options "--param=openacc-privatization=noisy" } + { dg-additional-options "-foffload=--param=openacc-privatization=noisy" } */ + +/* It's only with Tcl 8.5 (released in 2007) that "the variable 'varName' + passed to 'incr' may be unset, and in that case, it will be set to [...]", + so to maintain compatibility with earlier Tcl releases, we manually + initialize counter variables: + { dg-line l_dummy[variable c_compute 0 c_loop_i 0 c_loop_j 0 c_loop_k 0] } + { dg-message "dummy" "" { target iN-VAl-Id } l_dummy } to avoid + "WARNING: dg-line var l_dummy defined, but not used". */ + +#include int main (int argc, char* argv[]) @@ -16,18 +24,18 @@ main (int argc, char* argv[]) for (i = 0; i < 32 * 32; i++) arr[i] = i; - #pragma acc kernels copy(arr) - /* { dg-note {variable 'j' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ + #pragma acc kernels copy(arr) /* { dg-line l_compute[incr c_compute] } */ + /* { dg-note {variable 'j' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_compute$c_compute } */ { int j; - #pragma acc loop gang(num:32) - /* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ + #pragma acc loop gang(num:32) /* { dg-line l_loop_i[incr c_loop_i] } */ + /* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } */ for (i = 0; i < 32; i++) { - #pragma acc loop worker(num:32) private(x) - /* { dg-note {variable 'x' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ - /* { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-2 } */ + #pragma acc loop worker(num:32) private(x) /* { dg-line l_loop_j[incr c_loop_j] } */ + /* { dg-note {variable 'x' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } */ + /* { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } */ for (j = 0; j < 32; j++) { x = i ^ j * 3; @@ -38,6 +46,7 @@ main (int argc, char* argv[]) } } } + /* { dg-optimized {assigned OpenACC seq loop parallelism} {} { target *-*-* } l_compute$c_compute } */ for (i = 0; i < 32 * 32; i++) assert (arr[i] == i + ((i / 32) ^ (i % 32) * 3)); diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-worker-2.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-worker-2.c index 3bf62aae174..80ac99013d6 100644 --- a/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-worker-2.c +++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-worker-2.c @@ -1,14 +1,22 @@ -/* { dg-additional-options "-fopt-info-note-omp" } - { dg-additional-options "--param=openacc-privatization=noisy" } - { dg-additional-options "-foffload=-fopt-info-note-omp" } - { dg-additional-options "-foffload=--param=openacc-privatization=noisy" } - for testing/documenting aspects of that functionality. */ - -#include - /* Test of worker-private variables declared on a loop directive, broadcasting to vector-partitioned mode. */ +/* { dg-additional-options "-fopt-info-omp-all" } + { dg-additional-options "-foffload=-fopt-info-omp-all" } */ + +/* { dg-additional-options "--param=openacc-privatization=noisy" } + { dg-additional-options "-foffload=--param=openacc-privatization=noisy" } */ + +/* It's only with Tcl 8.5 (released in 2007) that "the variable 'varName' + passed to 'incr' may be unset, and in that case, it will be set to [...]", + so to maintain compatibility with earlier Tcl releases, we manually + initialize counter variables: + { dg-line l_dummy[variable c_compute 0 c_loop_i 0 c_loop_j 0 c_loop_k 0] } + { dg-message "dummy" "" { target iN-VAl-Id } l_dummy } to avoid + "WARNING: dg-line var l_dummy defined, but not used". */ + +#include + int main (int argc, char* argv[]) { @@ -17,31 +25,32 @@ main (int argc, char* argv[]) for (i = 0; i < 32 * 32 * 32; i++) arr[i] = i; - #pragma acc kernels copy(arr) - /* { dg-note {variable 'j' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ + #pragma acc kernels copy(arr) /* { dg-line l_compute[incr c_compute] } */ + /* { dg-note {variable 'j' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_compute$c_compute } */ { int j; - #pragma acc loop gang(num:32) - /* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ + #pragma acc loop gang(num:32) /* { dg-line l_loop_i[incr c_loop_i] } */ + /* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } */ for (i = 0; i < 32; i++) { - #pragma acc loop worker(num:32) private(x) - /* { dg-note {variable 'x' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ - /* { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-2 } */ - /* { dg-note {variable 'k' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-3 } */ + #pragma acc loop worker(num:32) private(x) /* { dg-line l_loop_j[incr c_loop_j] } */ + /* { dg-note {variable 'x' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } */ + /* { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } */ + /* { dg-note {variable 'k' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } */ for (j = 0; j < 32; j++) { int k; x = i ^ j * 3; - #pragma acc loop vector(length:32) - /* { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ + #pragma acc loop vector(length:32) /* { dg-line l_loop_k[incr c_loop_k] } */ + /* { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_k$c_loop_k } */ for (k = 0; k < 32; k++) arr[i * 1024 + j * 32 + k] += x * k; } } } + /* { dg-optimized {assigned OpenACC seq loop parallelism} {} { target *-*-* } l_compute$c_compute } */ for (i = 0; i < 32; i++) for (int j = 0; j < 32; j++) diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-worker-3.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-worker-3.c index 8de551635ea..a05ac609123 100644 --- a/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-worker-3.c +++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-worker-3.c @@ -1,14 +1,22 @@ -/* { dg-additional-options "-fopt-info-note-omp" } - { dg-additional-options "--param=openacc-privatization=noisy" } - { dg-additional-options "-foffload=-fopt-info-note-omp" } - { dg-additional-options "-foffload=--param=openacc-privatization=noisy" } - for testing/documenting aspects of that functionality. */ - -#include - /* Test of worker-private variables declared on a loop directive, broadcasting to vector-partitioned mode. Back-to-back worker loops. */ +/* { dg-additional-options "-fopt-info-omp-all" } + { dg-additional-options "-foffload=-fopt-info-omp-all" } */ + +/* { dg-additional-options "--param=openacc-privatization=noisy" } + { dg-additional-options "-foffload=--param=openacc-privatization=noisy" } */ + +/* It's only with Tcl 8.5 (released in 2007) that "the variable 'varName' + passed to 'incr' may be unset, and in that case, it will be set to [...]", + so to maintain compatibility with earlier Tcl releases, we manually + initialize counter variables: + { dg-line l_dummy[variable c_compute 0 c_loop_i 0 c_loop_j 0 c_loop_k 0] } + { dg-message "dummy" "" { target iN-VAl-Id } l_dummy } to avoid + "WARNING: dg-line var l_dummy defined, but not used". */ + +#include + int main (int argc, char* argv[]) { @@ -17,46 +25,47 @@ main (int argc, char* argv[]) for (i = 0; i < 32 * 32 * 32; i++) arr[i] = i; - #pragma acc kernels copy(arr) - /* { dg-note {variable 'j' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ + #pragma acc kernels copy(arr) /* { dg-line l_compute[incr c_compute] } */ + /* { dg-note {variable 'j' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_compute$c_compute } */ { int j; - #pragma acc loop gang(num:32) - /* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ + #pragma acc loop gang(num:32) /* { dg-line l_loop_i[incr c_loop_i] } */ + /* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } */ for (i = 0; i < 32; i++) { - #pragma acc loop worker(num:32) private(x) - /* { dg-note {variable 'x' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ - /* { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-2 } */ - /* { dg-note {variable 'k' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-3 } */ + #pragma acc loop worker(num:32) private(x) /* { dg-line l_loop_j[incr c_loop_j] } */ + /* { dg-note {variable 'x' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } */ + /* { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } */ + /* { dg-note {variable 'k' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } */ for (j = 0; j < 32; j++) { int k; x = i ^ j * 3; - #pragma acc loop vector(length:32) - /* { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ + #pragma acc loop vector(length:32) /* { dg-line l_loop_k[incr c_loop_k] } */ + /* { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_k$c_loop_k } */ for (k = 0; k < 32; k++) arr[i * 1024 + j * 32 + k] += x * k; } - #pragma acc loop worker(num:32) private(x) - /* { dg-note {variable 'x' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ - /* { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-2 } */ - /* { dg-note {variable 'k' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-3 } */ + #pragma acc loop worker(num:32) private(x) /* { dg-line l_loop_j[incr c_loop_j] } */ + /* { dg-note {variable 'x' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } */ + /* { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } */ + /* { dg-note {variable 'k' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } */ for (j = 0; j < 32; j++) { int k; x = i | j * 5; - #pragma acc loop vector(length:32) - /* { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ + #pragma acc loop vector(length:32) /* { dg-line l_loop_k[incr c_loop_k] } */ + /* { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_k$c_loop_k } */ for (k = 0; k < 32; k++) arr[i * 1024 + j * 32 + k] += x * k; } } } + /* { dg-optimized {assigned OpenACC seq loop parallelism} {} { target *-*-* } l_compute$c_compute } */ for (i = 0; i < 32; i++) for (int j = 0; j < 32; j++) diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-worker-4.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-worker-4.c index 425fe6321fa..d46bb948626 100644 --- a/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-worker-4.c +++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-worker-4.c @@ -1,14 +1,22 @@ -/* { dg-additional-options "-fopt-info-note-omp" } - { dg-additional-options "--param=openacc-privatization=noisy" } - { dg-additional-options "-foffload=-fopt-info-note-omp" } - { dg-additional-options "-foffload=--param=openacc-privatization=noisy" } - for testing/documenting aspects of that functionality. */ - -#include - /* Test of worker-private variables declared on a loop directive, broadcasting to vector-partitioned mode. Successive vector loops. */ +/* { dg-additional-options "-fopt-info-omp-all" } + { dg-additional-options "-foffload=-fopt-info-omp-all" } */ + +/* { dg-additional-options "--param=openacc-privatization=noisy" } + { dg-additional-options "-foffload=--param=openacc-privatization=noisy" } */ + +/* It's only with Tcl 8.5 (released in 2007) that "the variable 'varName' + passed to 'incr' may be unset, and in that case, it will be set to [...]", + so to maintain compatibility with earlier Tcl releases, we manually + initialize counter variables: + { dg-line l_dummy[variable c_compute 0 c_loop_i 0 c_loop_j 0 c_loop_k 0] } + { dg-message "dummy" "" { target iN-VAl-Id } l_dummy } to avoid + "WARNING: dg-line var l_dummy defined, but not used". */ + +#include + int main (int argc, char* argv[]) { @@ -17,38 +25,39 @@ main (int argc, char* argv[]) for (i = 0; i < 32 * 32 * 32; i++) arr[i] = i; - #pragma acc kernels copy(arr) - /* { dg-note {variable 'j' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ + #pragma acc kernels copy(arr) /* { dg-line l_compute[incr c_compute] } */ + /* { dg-note {variable 'j' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_compute$c_compute } */ { int j; - #pragma acc loop gang(num:32) - /* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ + #pragma acc loop gang(num:32) /* { dg-line l_loop_i[incr c_loop_i] } */ + /* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } */ for (i = 0; i < 32; i++) { - #pragma acc loop worker(num:32) private(x) - /* { dg-note {variable 'x' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ - /* { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-2 } */ - /* { dg-note {variable 'k' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-3 } */ + #pragma acc loop worker(num:32) private(x) /* { dg-line l_loop_j[incr c_loop_j] } */ + /* { dg-note {variable 'x' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } */ + /* { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } */ + /* { dg-note {variable 'k' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } */ for (j = 0; j < 32; j++) { int k; x = i ^ j * 3; - #pragma acc loop vector(length:32) - /* { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ + #pragma acc loop vector(length:32) /* { dg-line l_loop_k[incr c_loop_k] } */ + /* { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_k$c_loop_k } */ for (k = 0; k < 32; k++) arr[i * 1024 + j * 32 + k] += x * k; x = i | j * 5; - #pragma acc loop vector(length:32) - /* { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ + #pragma acc loop vector(length:32) /* { dg-line l_loop_k[incr c_loop_k] } */ + /* { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_k$c_loop_k } */ for (k = 0; k < 32; k++) arr[i * 1024 + j * 32 + k] += x * k; } } } + /* { dg-optimized {assigned OpenACC seq loop parallelism} {} { target *-*-* } l_compute$c_compute } */ for (i = 0; i < 32; i++) for (int j = 0; j < 32; j++) diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-worker-5.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-worker-5.c index c027c024b9c..644c6175863 100644 --- a/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-worker-5.c +++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-worker-5.c @@ -1,14 +1,22 @@ -/* { dg-additional-options "-fopt-info-note-omp" } - { dg-additional-options "--param=openacc-privatization=noisy" } - { dg-additional-options "-foffload=-fopt-info-note-omp" } - { dg-additional-options "-foffload=--param=openacc-privatization=noisy" } - for testing/documenting aspects of that functionality. */ - -#include - /* Test of worker-private variables declared on a loop directive, broadcasting to vector-partitioned mode. Addressable worker variable. */ +/* { dg-additional-options "-fopt-info-omp-all" } + { dg-additional-options "-foffload=-fopt-info-omp-all" } */ + +/* { dg-additional-options "--param=openacc-privatization=noisy" } + { dg-additional-options "-foffload=--param=openacc-privatization=noisy" } */ + +/* It's only with Tcl 8.5 (released in 2007) that "the variable 'varName' + passed to 'incr' may be unset, and in that case, it will be set to [...]", + so to maintain compatibility with earlier Tcl releases, we manually + initialize counter variables: + { dg-line l_dummy[variable c_compute 0 c_loop_i 0 c_loop_j 0 c_loop_k 0] } + { dg-message "dummy" "" { target iN-VAl-Id } l_dummy } to avoid + "WARNING: dg-line var l_dummy defined, but not used". */ + +#include + int main (int argc, char* argv[]) { @@ -17,20 +25,20 @@ main (int argc, char* argv[]) for (i = 0; i < 32 * 32 * 32; i++) arr[i] = i; - #pragma acc kernels copy(arr) - /* { dg-note {variable 'j' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ + #pragma acc kernels copy(arr) /* { dg-line l_compute[incr c_compute] } */ + /* { dg-note {variable 'j' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_compute$c_compute } */ { int j; - #pragma acc loop gang(num:32) - /* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ + #pragma acc loop gang(num:32) /* { dg-line l_loop_i[incr c_loop_i] } */ + /* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } */ for (i = 0; i < 32; i++) { - #pragma acc loop worker(num:32) private(x) - /* { dg-note {variable 'x' in 'private' clause is candidate for adjusting OpenACC privatization level} "" { target *-*-* } .-1 } */ - /* { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-2 } */ - /* { dg-note {variable 'k' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-3 } */ - /* { dg-note {variable 'p' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-4 } */ + #pragma acc loop worker(num:32) private(x) /* { dg-line l_loop_j[incr c_loop_j] } */ + /* { dg-note {variable 'x' in 'private' clause is candidate for adjusting OpenACC privatization level} {} { target *-*-* } l_loop_j$c_loop_j } */ + /* { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } */ + /* { dg-note {variable 'k' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } */ + /* { dg-note {variable 'p' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } */ for (j = 0; j < 32; j++) { int k; @@ -38,20 +46,21 @@ main (int argc, char* argv[]) x = i ^ j * 3; - #pragma acc loop vector(length:32) - /* { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ + #pragma acc loop vector(length:32) /* { dg-line l_loop_k[incr c_loop_k] } */ + /* { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_k$c_loop_k } */ for (k = 0; k < 32; k++) arr[i * 1024 + j * 32 + k] += x * k; *p = i | j * 5; - #pragma acc loop vector(length:32) - /* { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ + #pragma acc loop vector(length:32) /* { dg-line l_loop_k[incr c_loop_k] } */ + /* { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_k$c_loop_k } */ for (k = 0; k < 32; k++) arr[i * 1024 + j * 32 + k] += x * k; } } } + /* { dg-optimized {assigned OpenACC seq loop parallelism} {} { target *-*-* } l_compute$c_compute } */ for (i = 0; i < 32; i++) for (int j = 0; j < 32; j++) diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-worker-6.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-worker-6.c index 4f17566f8f9..182a12a1b3f 100644 --- a/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-worker-6.c +++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-worker-6.c @@ -1,14 +1,22 @@ -/* { dg-additional-options "-fopt-info-note-omp" } - { dg-additional-options "--param=openacc-privatization=noisy" } - { dg-additional-options "-foffload=-fopt-info-note-omp" } - { dg-additional-options "-foffload=--param=openacc-privatization=noisy" } - for testing/documenting aspects of that functionality. */ - -#include - /* Test of worker-private variables declared on a loop directive, broadcasting to vector-partitioned mode. Aggregate worker variable. */ +/* { dg-additional-options "-fopt-info-omp-all" } + { dg-additional-options "-foffload=-fopt-info-omp-all" } */ + +/* { dg-additional-options "--param=openacc-privatization=noisy" } + { dg-additional-options "-foffload=--param=openacc-privatization=noisy" } */ + +/* It's only with Tcl 8.5 (released in 2007) that "the variable 'varName' + passed to 'incr' may be unset, and in that case, it will be set to [...]", + so to maintain compatibility with earlier Tcl releases, we manually + initialize counter variables: + { dg-line l_dummy[variable c_compute 0 c_loop_i 0 c_loop_j 0 c_loop_k 0] } + { dg-message "dummy" "" { target iN-VAl-Id } l_dummy } to avoid + "WARNING: dg-line var l_dummy defined, but not used". */ + +#include + typedef struct { int x, y; @@ -23,19 +31,19 @@ main (int argc, char* argv[]) for (i = 0; i < 32 * 32 * 32; i++) arr[i] = i; - #pragma acc kernels copy(arr) - /* { dg-note {variable 'j' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ + #pragma acc kernels copy(arr) /* { dg-line l_compute[incr c_compute] } */ + /* { dg-note {variable 'j' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_compute$c_compute } */ { int j; - #pragma acc loop gang(num:32) - /* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ + #pragma acc loop gang(num:32) /* { dg-line l_loop_i[incr c_loop_i] } */ + /* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } */ for (i = 0; i < 32; i++) { - #pragma acc loop worker(num:32) private(pt) - /* { dg-note {variable 'pt' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ - /* { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-2 } */ - /* { dg-note {variable 'k' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-3 } */ + #pragma acc loop worker(num:32) private(pt) /* { dg-line l_loop_j[incr c_loop_j] } */ + /* { dg-note {variable 'pt' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } */ + /* { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } */ + /* { dg-note {variable 'k' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } */ for (j = 0; j < 32; j++) { int k; @@ -43,18 +51,19 @@ main (int argc, char* argv[]) pt.x = i ^ j * 3; pt.y = i | j * 5; - #pragma acc loop vector(length:32) - /* { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ + #pragma acc loop vector(length:32) /* { dg-line l_loop_k[incr c_loop_k] } */ + /* { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_k$c_loop_k } */ for (k = 0; k < 32; k++) arr[i * 1024 + j * 32 + k] += pt.x * k; - #pragma acc loop vector(length:32) - /* { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ + #pragma acc loop vector(length:32) /* { dg-line l_loop_k[incr c_loop_k] } */ + /* { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_k$c_loop_k } */ for (k = 0; k < 32; k++) arr[i * 1024 + j * 32 + k] += pt.y * k; } } } + /* { dg-optimized {assigned OpenACC seq loop parallelism} {} { target *-*-* } l_compute$c_compute } */ for (i = 0; i < 32; i++) for (int j = 0; j < 32; j++) diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-worker-7.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-worker-7.c index 12b4c548156..bdfbb59c5c5 100644 --- a/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-worker-7.c +++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-worker-7.c @@ -1,14 +1,22 @@ -/* { dg-additional-options "-fopt-info-note-omp" } - { dg-additional-options "--param=openacc-privatization=noisy" } - { dg-additional-options "-foffload=-fopt-info-note-omp" } - { dg-additional-options "-foffload=--param=openacc-privatization=noisy" } - for testing/documenting aspects of that functionality. */ - -#include - /* Test of worker-private variables declared on loop directive, broadcasting to vector-partitioned mode. Array worker variable. */ +/* { dg-additional-options "-fopt-info-omp-all" } + { dg-additional-options "-foffload=-fopt-info-omp-all" } */ + +/* { dg-additional-options "--param=openacc-privatization=noisy" } + { dg-additional-options "-foffload=--param=openacc-privatization=noisy" } */ + +/* It's only with Tcl 8.5 (released in 2007) that "the variable 'varName' + passed to 'incr' may be unset, and in that case, it will be set to [...]", + so to maintain compatibility with earlier Tcl releases, we manually + initialize counter variables: + { dg-line l_dummy[variable c_compute 0 c_loop_i 0 c_loop_j 0 c_loop_k 0] } + { dg-message "dummy" "" { target iN-VAl-Id } l_dummy } to avoid + "WARNING: dg-line var l_dummy defined, but not used". */ + +#include + int main (int argc, char* argv[]) { @@ -20,40 +28,41 @@ main (int argc, char* argv[]) /* "pt" is treated as "present_or_copy" on the kernels directive because it is an array variable. */ - #pragma acc kernels copy(arr) - /* { dg-note {variable 'j' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ + #pragma acc kernels copy(arr) /* { dg-line l_compute[incr c_compute] } */ + /* { dg-note {variable 'j' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_compute$c_compute } */ { int j; - #pragma acc loop gang(num:32) - /* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ + #pragma acc loop gang(num:32) /* { dg-line l_loop_i[incr c_loop_i] } */ + /* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } */ for (i = 0; i < 32; i++) { /* But here, it is made private per-worker. */ - #pragma acc loop worker(num:32) private(pt) - /* { dg-note {variable 'pt' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ - /* { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-2 } */ - /* { dg-note {variable 'k' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-3 } */ + #pragma acc loop worker(num:32) private(pt) /* { dg-line l_loop_j[incr c_loop_j] } */ + /* { dg-note {variable 'pt' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } */ + /* { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } */ + /* { dg-note {variable 'k' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } */ for (j = 0; j < 32; j++) { int k; pt[0] = i ^ j * 3; - #pragma acc loop vector(length:32) - /* { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ + #pragma acc loop vector(length:32) /* { dg-line l_loop_k[incr c_loop_k] } */ + /* { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_k$c_loop_k } */ for (k = 0; k < 32; k++) arr[i * 1024 + j * 32 + k] += pt[0] * k; pt[1] = i | j * 5; - #pragma acc loop vector(length:32) - /* { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ + #pragma acc loop vector(length:32) /* { dg-line l_loop_k[incr c_loop_k] } */ + /* { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_k$c_loop_k } */ for (k = 0; k < 32; k++) arr[i * 1024 + j * 32 + k] += pt[1] * k; } } } + /* { dg-optimized {assigned OpenACC seq loop parallelism} {} { target *-*-* } l_compute$c_compute } */ for (i = 0; i < 32; i++) for (int j = 0; j < 32; j++) diff --git a/libgomp/testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-gang-1.f90 b/libgomp/testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-gang-1.f90 index 0ae7c4bc761..09ab3956624 100644 --- a/libgomp/testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-gang-1.f90 +++ b/libgomp/testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-gang-1.f90 @@ -2,11 +2,19 @@ ! { dg-do run } -! { dg-additional-options "-fopt-info-note-omp" } +! { dg-additional-options "-fopt-info-omp-all" } +! { dg-additional-options "-foffload=-fopt-info-omp-all" } + ! { dg-additional-options "--param=openacc-privatization=noisy" } -! { dg-additional-options "-foffload=-fopt-info-note-omp" } ! { dg-additional-options "-foffload=--param=openacc-privatization=noisy" } -! for testing/documenting aspects of that functionality. + +! It's only with Tcl 8.5 (released in 2007) that "the variable 'varName' +! passed to 'incr' may be unset, and in that case, it will be set to [...]", +! so to maintain compatibility with earlier Tcl releases, we manually +! initialize counter variables: +! { dg-line l_dummy[variable c_compute 0 c_loop_i 0 c_loop_j 0 c_loop_k 0] } +! { dg-message "dummy" "" { target iN-VAl-Id } l_dummy } to avoid +! "WARNING: dg-line var l_dummy defined, but not used". program main integer :: x, i, arr(32) @@ -15,15 +23,16 @@ program main arr(i) = i end do - !$acc kernels copy(arr) - !$acc loop gang(num:32) private(x) - ! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } - ! { dg-note {variable 'x' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-2 } + !$acc kernels copy(arr) ! { dg-line l_compute[incr c_compute] } + !$acc loop gang(num:32) private(x) ! { dg-line l_loop_i[incr c_loop_i] } + ! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } + ! { dg-note {variable 'x' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } do i = 1, 32 x = i * 2; arr(i) = arr(i) + x; end do !$acc end kernels + ! { dg-optimized {assigned OpenACC seq loop parallelism} {} { target *-*-* } l_compute$c_compute } do i = 1, 32 if (arr(i) .ne. i * 3) stop 1 diff --git a/libgomp/testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-gang-2.f90 b/libgomp/testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-gang-2.f90 index e3ff24848b6..bec1069c2a8 100644 --- a/libgomp/testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-gang-2.f90 +++ b/libgomp/testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-gang-2.f90 @@ -3,11 +3,19 @@ ! { dg-do run } -! { dg-additional-options "-fopt-info-note-omp" } +! { dg-additional-options "-fopt-info-omp-all" } +! { dg-additional-options "-foffload=-fopt-info-omp-all" } + ! { dg-additional-options "--param=openacc-privatization=noisy" } -! { dg-additional-options "-foffload=-fopt-info-note-omp" } ! { dg-additional-options "-foffload=--param=openacc-privatization=noisy" } -! for testing/documenting aspects of that functionality. + +! It's only with Tcl 8.5 (released in 2007) that "the variable 'varName' +! passed to 'incr' may be unset, and in that case, it will be set to [...]", +! so to maintain compatibility with earlier Tcl releases, we manually +! initialize counter variables: +! { dg-line l_dummy[variable c_compute 0 c_loop_i 0 c_loop_j 0 c_loop_k 0] } +! { dg-message "dummy" "" { target iN-VAl-Id } l_dummy } to avoid +! "WARNING: dg-line var l_dummy defined, but not used". program main integer :: x, i, j, arr(0:32*32) @@ -16,20 +24,21 @@ program main arr(i) = i end do - !$acc kernels copy(arr) - !$acc loop gang(num:32) private(x) - ! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } - ! { dg-note {variable 'x' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-2 } + !$acc kernels copy(arr) ! { dg-line l_compute[incr c_compute] } + !$acc loop gang(num:32) private(x) ! { dg-line l_loop_i[incr c_loop_i] } + ! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } + ! { dg-note {variable 'x' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } do i = 0, 31 x = i * 2; - !$acc loop worker(num:32) - ! { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } + !$acc loop worker(num:32) ! { dg-line l_loop_j[incr c_loop_j] } + ! { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } do j = 0, 31 arr(i * 32 + j) = arr(i * 32 + j) + x; end do end do !$acc end kernels + ! { dg-optimized {assigned OpenACC seq loop parallelism} {} { target *-*-* } l_compute$c_compute } do i = 0, 32 * 32 - 1 if (arr(i) .ne. i + (i / 32) * 2) stop 1 diff --git a/libgomp/testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-gang-3.f90 b/libgomp/testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-gang-3.f90 index 370a25a7db6..9fde012c19c 100644 --- a/libgomp/testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-gang-3.f90 +++ b/libgomp/testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-gang-3.f90 @@ -3,11 +3,19 @@ ! { dg-do run } -! { dg-additional-options "-fopt-info-note-omp" } +! { dg-additional-options "-fopt-info-omp-all" } +! { dg-additional-options "-foffload=-fopt-info-omp-all" } + ! { dg-additional-options "--param=openacc-privatization=noisy" } -! { dg-additional-options "-foffload=-fopt-info-note-omp" } ! { dg-additional-options "-foffload=--param=openacc-privatization=noisy" } -! for testing/documenting aspects of that functionality. + +! It's only with Tcl 8.5 (released in 2007) that "the variable 'varName' +! passed to 'incr' may be unset, and in that case, it will be set to [...]", +! so to maintain compatibility with earlier Tcl releases, we manually +! initialize counter variables: +! { dg-line l_dummy[variable c_compute 0 c_loop_i 0 c_loop_j 0 c_loop_k 0] } +! { dg-message "dummy" "" { target iN-VAl-Id } l_dummy } to avoid +! "WARNING: dg-line var l_dummy defined, but not used". program main integer :: x, i, j, arr(0:32*32) @@ -16,20 +24,21 @@ program main arr(i) = i end do - !$acc kernels copy(arr) - !$acc loop gang(num:32) private(x) - ! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } - ! { dg-note {variable 'x' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-2 } + !$acc kernels copy(arr) ! { dg-line l_compute[incr c_compute] } + !$acc loop gang(num:32) private(x) ! { dg-line l_loop_i[incr c_loop_i] } + ! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } + ! { dg-note {variable 'x' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } do i = 0, 31 x = i * 2; - !$acc loop vector(length:32) - ! { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } + !$acc loop vector(length:32) ! { dg-line l_loop_j[incr c_loop_j] } + ! { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } do j = 0, 31 arr(i * 32 + j) = arr(i * 32 + j) + x; end do end do !$acc end kernels + ! { dg-optimized {assigned OpenACC seq loop parallelism} {} { target *-*-* } l_compute$c_compute } do i = 0, 32 * 32 - 1 if (arr(i) .ne. i + (i / 32) * 2) stop 1 diff --git a/libgomp/testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-gang-6.f90 b/libgomp/testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-gang-6.f90 index abb86d0824f..02e09b31cf7 100644 --- a/libgomp/testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-gang-6.f90 +++ b/libgomp/testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-gang-6.f90 @@ -3,11 +3,19 @@ ! { dg-do run } -! { dg-additional-options "-fopt-info-note-omp" } +! { dg-additional-options "-fopt-info-omp-all" } +! { dg-additional-options "-foffload=-fopt-info-omp-all" } + ! { dg-additional-options "--param=openacc-privatization=noisy" } -! { dg-additional-options "-foffload=-fopt-info-note-omp" } ! { dg-additional-options "-foffload=--param=openacc-privatization=noisy" } -! for testing/documenting aspects of that functionality. + +! It's only with Tcl 8.5 (released in 2007) that "the variable 'varName' +! passed to 'incr' may be unset, and in that case, it will be set to [...]", +! so to maintain compatibility with earlier Tcl releases, we manually +! initialize counter variables: +! { dg-line l_dummy[variable c_compute 0 c_loop_i 0 c_loop_j 0 c_loop_k 0] } +! { dg-message "dummy" "" { target iN-VAl-Id } l_dummy } to avoid +! "WARNING: dg-line var l_dummy defined, but not used". program main type vec3 @@ -21,23 +29,24 @@ program main arr(i) = i end do - !$acc kernels copy(arr) - !$acc loop gang(num:32) private(pt) - ! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } - ! { dg-note {variable 'pt' in 'private' clause is candidate for adjusting OpenACC privatization level} "" { target *-*-* } .-2 } + !$acc kernels copy(arr) ! { dg-line l_compute[incr c_compute] } + !$acc loop gang(num:32) private(pt) ! { dg-line l_loop_i[incr c_loop_i] } + ! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } + ! { dg-note {variable 'pt' in 'private' clause is candidate for adjusting OpenACC privatization level} {} { target *-*-* } l_loop_i$c_loop_i } do i = 0, 31 pt%x = i pt%y = i * 2 pt%z = i * 4 pt%attr(5) = i * 6 - !$acc loop vector(length:32) - ! { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } + !$acc loop vector(length:32) ! { dg-line l_loop_j[incr c_loop_j] } + ! { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } do j = 0, 31 arr(i * 32 + j) = arr(i * 32 + j) + pt%x + pt%y + pt%z + pt%attr(5); end do end do !$acc end kernels + ! { dg-optimized {assigned OpenACC seq loop parallelism} {} { target *-*-* } l_compute$c_compute } do i = 0, 32 * 32 - 1 if (arr(i) .ne. i + (i / 32) * 13) stop 1 diff --git a/libgomp/testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-vector-1.f90 b/libgomp/testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-vector-1.f90 index fe796f3ba46..5811d0c41b7 100644 --- a/libgomp/testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-vector-1.f90 +++ b/libgomp/testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-vector-1.f90 @@ -2,11 +2,19 @@ ! { dg-do run } -! { dg-additional-options "-fopt-info-note-omp" } +! { dg-additional-options "-fopt-info-omp-all" } +! { dg-additional-options "-foffload=-fopt-info-omp-all" } + ! { dg-additional-options "--param=openacc-privatization=noisy" } -! { dg-additional-options "-foffload=-fopt-info-note-omp" } ! { dg-additional-options "-foffload=--param=openacc-privatization=noisy" } -! for testing/documenting aspects of that functionality. + +! It's only with Tcl 8.5 (released in 2007) that "the variable 'varName' +! passed to 'incr' may be unset, and in that case, it will be set to [...]", +! so to maintain compatibility with earlier Tcl releases, we manually +! initialize counter variables: +! { dg-line l_dummy[variable c_compute 0 c_loop_i 0 c_loop_j 0 c_loop_k 0] } +! { dg-message "dummy" "" { target iN-VAl-Id } l_dummy } to avoid +! "WARNING: dg-line var l_dummy defined, but not used". program main integer :: x, i, j, k, idx, arr(0:32*32*32) @@ -15,23 +23,23 @@ program main arr(i) = i end do - !$acc kernels copy(arr) - !$acc loop gang(num:32) - ! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } + !$acc kernels copy(arr) ! { dg-line l_compute[incr c_compute] } + !$acc loop gang(num:32) ! { dg-line l_loop_i[incr c_loop_i] } + ! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } do i = 0, 31 - !$acc loop worker(num:8) - ! { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } + !$acc loop worker(num:8) ! { dg-line l_loop_j[incr c_loop_j] } + ! { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } do j = 0, 31 - !$acc loop vector(length:32) private(x) - ! { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } - ! { dg-note {variable 'x' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-2 } + !$acc loop vector(length:32) private(x) ! { dg-line l_loop_k[incr c_loop_k] } + ! { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_k$c_loop_k } + ! { dg-note {variable 'x' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_k$c_loop_k } do k = 0, 31 x = ieor(i, j * 3) arr(i * 1024 + j * 32 + k) = arr(i * 1024 + j * 32 + k) + x * k end do - !$acc loop vector(length:32) private(x) - ! { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } - ! { dg-note {variable 'x' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-2 } + !$acc loop vector(length:32) private(x) ! { dg-line l_loop_k[incr c_loop_k] } + ! { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_k$c_loop_k } + ! { dg-note {variable 'x' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_k$c_loop_k } do k = 0, 31 x = ior(i, j * 5) arr(i * 1024 + j * 32 + k) = arr(i * 1024 + j * 32 + k) + x * k @@ -39,6 +47,7 @@ program main end do end do !$acc end kernels + ! { dg-optimized {assigned OpenACC seq loop parallelism} {} { target *-*-* } l_compute$c_compute } do i = 0, 32 - 1 do j = 0, 32 -1 diff --git a/libgomp/testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-vector-2.f90 b/libgomp/testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-vector-2.f90 index b5cefeccc22..81125a24d0d 100644 --- a/libgomp/testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-vector-2.f90 +++ b/libgomp/testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-vector-2.f90 @@ -2,11 +2,19 @@ ! { dg-do run } -! { dg-additional-options "-fopt-info-note-omp" } +! { dg-additional-options "-fopt-info-omp-all" } +! { dg-additional-options "-foffload=-fopt-info-omp-all" } + ! { dg-additional-options "--param=openacc-privatization=noisy" } -! { dg-additional-options "-foffload=-fopt-info-note-omp" } ! { dg-additional-options "-foffload=--param=openacc-privatization=noisy" } -! for testing/documenting aspects of that functionality. + +! It's only with Tcl 8.5 (released in 2007) that "the variable 'varName' +! passed to 'incr' may be unset, and in that case, it will be set to [...]", +! so to maintain compatibility with earlier Tcl releases, we manually +! initialize counter variables: +! { dg-line l_dummy[variable c_compute 0 c_loop_i 0 c_loop_j 0 c_loop_k 0] } +! { dg-message "dummy" "" { target iN-VAl-Id } l_dummy } to avoid +! "WARNING: dg-line var l_dummy defined, but not used". program main integer :: i, j, k, idx, arr(0:32*32*32), pt(2) @@ -15,16 +23,16 @@ program main arr(i) = i end do - !$acc kernels copy(arr) - !$acc loop gang(num:32) - ! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } + !$acc kernels copy(arr) ! { dg-line l_compute[incr c_compute] } + !$acc loop gang(num:32) ! { dg-line l_loop_i[incr c_loop_i] } + ! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } do i = 0, 31 - !$acc loop worker(num:8) - ! { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } + !$acc loop worker(num:8) ! { dg-line l_loop_j[incr c_loop_j] } + ! { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } do j = 0, 31 - !$acc loop vector(length:32) private(x, pt) - ! { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } - ! { dg-note {variable 'pt' in 'private' clause is candidate for adjusting OpenACC privatization level} "" { target *-*-* } .-2 } + !$acc loop vector(length:32) private(x, pt) ! { dg-line l_loop_k[incr c_loop_k] } + ! { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_k$c_loop_k } + ! { dg-note {variable 'pt' in 'private' clause is candidate for adjusting OpenACC privatization level} {} { target *-*-* } l_loop_k$c_loop_k } do k = 0, 31 pt(1) = ieor(i, j * 3) pt(2) = ior(i, j * 5) @@ -34,6 +42,7 @@ program main end do end do !$acc end kernels + ! { dg-optimized {assigned OpenACC seq loop parallelism} {} { target *-*-* } l_compute$c_compute } do i = 0, 32 - 1 do j = 0, 32 -1 diff --git a/libgomp/testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-worker-1.f90 b/libgomp/testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-worker-1.f90 index 3fd1239da4b..824c198799c 100644 --- a/libgomp/testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-worker-1.f90 +++ b/libgomp/testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-worker-1.f90 @@ -2,11 +2,19 @@ ! { dg-do run } -! { dg-additional-options "-fopt-info-note-omp" } +! { dg-additional-options "-fopt-info-omp-all" } +! { dg-additional-options "-foffload=-fopt-info-omp-all" } + ! { dg-additional-options "--param=openacc-privatization=noisy" } -! { dg-additional-options "-foffload=-fopt-info-note-omp" } ! { dg-additional-options "-foffload=--param=openacc-privatization=noisy" } -! for testing/documenting aspects of that functionality. + +! It's only with Tcl 8.5 (released in 2007) that "the variable 'varName' +! passed to 'incr' may be unset, and in that case, it will be set to [...]", +! so to maintain compatibility with earlier Tcl releases, we manually +! initialize counter variables: +! { dg-line l_dummy[variable c_compute 0 c_loop_i 0 c_loop_j 0 c_loop_k 0] } +! { dg-message "dummy" "" { target iN-VAl-Id } l_dummy } to avoid +! "WARNING: dg-line var l_dummy defined, but not used". program main integer :: x, i, j, arr(0:32*32) @@ -16,19 +24,20 @@ program main arr(i) = i end do - !$acc kernels copy(arr) - !$acc loop gang(num:32) private(x) - ! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } + !$acc kernels copy(arr) ! { dg-line l_compute[incr c_compute] } + !$acc loop gang(num:32) private(x) ! { dg-line l_loop_i[incr c_loop_i] } + ! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } do i = 0, 31 - !$acc loop worker(num:8) private(x) - ! { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } - ! { dg-note {variable 'x' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-2 } + !$acc loop worker(num:8) private(x) ! { dg-line l_loop_j[incr c_loop_j] } + ! { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } + ! { dg-note {variable 'x' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } do j = 0, 31 x = ieor(i, j * 3) arr(i * 32 + j) = arr(i * 32 + j) + x end do end do !$acc end kernels + ! { dg-optimized {assigned OpenACC seq loop parallelism} {} { target *-*-* } l_compute$c_compute } do i = 0, 32 * 32 - 1 if (arr(i) .ne. i + ieor(i / 32, mod(i, 32) * 3)) stop 1 diff --git a/libgomp/testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-worker-2.f90 b/libgomp/testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-worker-2.f90 index 1dc5d9e8eff..d25d419a11e 100644 --- a/libgomp/testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-worker-2.f90 +++ b/libgomp/testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-worker-2.f90 @@ -3,11 +3,19 @@ ! { dg-do run } -! { dg-additional-options "-fopt-info-note-omp" } +! { dg-additional-options "-fopt-info-omp-all" } +! { dg-additional-options "-foffload=-fopt-info-omp-all" } + ! { dg-additional-options "--param=openacc-privatization=noisy" } -! { dg-additional-options "-foffload=-fopt-info-note-omp" } ! { dg-additional-options "-foffload=--param=openacc-privatization=noisy" } -! for testing/documenting aspects of that functionality. + +! It's only with Tcl 8.5 (released in 2007) that "the variable 'varName' +! passed to 'incr' may be unset, and in that case, it will be set to [...]", +! so to maintain compatibility with earlier Tcl releases, we manually +! initialize counter variables: +! { dg-line l_dummy[variable c_compute 0 c_loop_i 0 c_loop_j 0 c_loop_k 0] } +! { dg-message "dummy" "" { target iN-VAl-Id } l_dummy } to avoid +! "WARNING: dg-line var l_dummy defined, but not used". program main integer :: x, i, j, k, idx, arr(0:32*32*32) @@ -16,24 +24,25 @@ program main arr(i) = i end do - !$acc kernels copy(arr) - !$acc loop gang(num:32) - ! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } + !$acc kernels copy(arr) ! { dg-line l_compute[incr c_compute] } + !$acc loop gang(num:32) ! { dg-line l_loop_i[incr c_loop_i] } + ! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } do i = 0, 31 - !$acc loop worker(num:8) private(x) - ! { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } - ! { dg-note {variable 'x' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-2 } + !$acc loop worker(num:8) private(x) ! { dg-line l_loop_j[incr c_loop_j] } + ! { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } + ! { dg-note {variable 'x' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } do j = 0, 31 x = ieor(i, j * 3) - !$acc loop vector(length:32) - ! { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } + !$acc loop vector(length:32) ! { dg-line l_loop_k[incr c_loop_k] } + ! { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_k$c_loop_k } do k = 0, 31 arr(i * 1024 + j * 32 + k) = arr(i * 1024 + j * 32 + k) + x * k end do end do end do !$acc end kernels + ! { dg-optimized {assigned OpenACC seq loop parallelism} {} { target *-*-* } l_compute$c_compute } do i = 0, 32 - 1 do j = 0, 32 -1 diff --git a/libgomp/testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-worker-3.f90 b/libgomp/testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-worker-3.f90 index 25bc67abb8b..7a69145b3b6 100644 --- a/libgomp/testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-worker-3.f90 +++ b/libgomp/testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-worker-3.f90 @@ -3,11 +3,19 @@ ! { dg-do run } -! { dg-additional-options "-fopt-info-note-omp" } +! { dg-additional-options "-fopt-info-omp-all" } +! { dg-additional-options "-foffload=-fopt-info-omp-all" } + ! { dg-additional-options "--param=openacc-privatization=noisy" } -! { dg-additional-options "-foffload=-fopt-info-note-omp" } ! { dg-additional-options "-foffload=--param=openacc-privatization=noisy" } -! for testing/documenting aspects of that functionality. + +! It's only with Tcl 8.5 (released in 2007) that "the variable 'varName' +! passed to 'incr' may be unset, and in that case, it will be set to [...]", +! so to maintain compatibility with earlier Tcl releases, we manually +! initialize counter variables: +! { dg-line l_dummy[variable c_compute 0 c_loop_i 0 c_loop_j 0 c_loop_k 0] } +! { dg-message "dummy" "" { target iN-VAl-Id } l_dummy } to avoid +! "WARNING: dg-line var l_dummy defined, but not used". program main integer :: x, i, j, k, idx, arr(0:32*32*32) @@ -16,37 +24,38 @@ program main arr(i) = i end do - !$acc kernels copy(arr) - !$acc loop gang(num:32) - ! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } + !$acc kernels copy(arr) ! { dg-line l_compute[incr c_compute] } + !$acc loop gang(num:32) ! { dg-line l_loop_i[incr c_loop_i] } + ! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } do i = 0, 31 - !$acc loop worker(num:8) private(x) - ! { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } - ! { dg-note {variable 'x' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-2 } + !$acc loop worker(num:8) private(x) ! { dg-line l_loop_j[incr c_loop_j] } + ! { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } + ! { dg-note {variable 'x' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } do j = 0, 31 x = ieor(i, j * 3) - !$acc loop vector(length:32) - ! { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } + !$acc loop vector(length:32) ! { dg-line l_loop_k[incr c_loop_k] } + ! { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_k$c_loop_k } do k = 0, 31 arr(i * 1024 + j * 32 + k) = arr(i * 1024 + j * 32 + k) + x * k end do end do - !$acc loop worker(num:8) private(x) - ! { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } - ! { dg-note {variable 'x' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-2 } + !$acc loop worker(num:8) private(x) ! { dg-line l_loop_j[incr c_loop_j] } + ! { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } + ! { dg-note {variable 'x' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } do j = 0, 31 x = ior(i, j * 5) - !$acc loop vector(length:32) - ! { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } + !$acc loop vector(length:32) ! { dg-line l_loop_k[incr c_loop_k] } + ! { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_k$c_loop_k } do k = 0, 31 arr(i * 1024 + j * 32 + k) = arr(i * 1024 + j * 32 + k) + x * k end do end do end do !$acc end kernels + ! { dg-optimized {assigned OpenACC seq loop parallelism} {} { target *-*-* } l_compute$c_compute } do i = 0, 32 - 1 do j = 0, 32 -1 diff --git a/libgomp/testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-worker-4.f90 b/libgomp/testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-worker-4.f90 index b3f66eaf773..2c1d5665ce5 100644 --- a/libgomp/testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-worker-4.f90 +++ b/libgomp/testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-worker-4.f90 @@ -3,11 +3,19 @@ ! { dg-do run } -! { dg-additional-options "-fopt-info-note-omp" } +! { dg-additional-options "-fopt-info-omp-all" } +! { dg-additional-options "-foffload=-fopt-info-omp-all" } + ! { dg-additional-options "--param=openacc-privatization=noisy" } -! { dg-additional-options "-foffload=-fopt-info-note-omp" } ! { dg-additional-options "-foffload=--param=openacc-privatization=noisy" } -! for testing/documenting aspects of that functionality. + +! It's only with Tcl 8.5 (released in 2007) that "the variable 'varName' +! passed to 'incr' may be unset, and in that case, it will be set to [...]", +! so to maintain compatibility with earlier Tcl releases, we manually +! initialize counter variables: +! { dg-line l_dummy[variable c_compute 0 c_loop_i 0 c_loop_j 0 c_loop_k 0] } +! { dg-message "dummy" "" { target iN-VAl-Id } l_dummy } to avoid +! "WARNING: dg-line var l_dummy defined, but not used". program main integer :: x, i, j, k, idx, arr(0:32*32*32) @@ -16,32 +24,33 @@ program main arr(i) = i end do - !$acc kernels copy(arr) - !$acc loop gang(num:32) - ! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } + !$acc kernels copy(arr) ! { dg-line l_compute[incr c_compute] } + !$acc loop gang(num:32) ! { dg-line l_loop_i[incr c_loop_i] } + ! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } do i = 0, 31 - !$acc loop worker(num:8) private(x) - ! { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } - ! { dg-note {variable 'x' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-2 } + !$acc loop worker(num:8) private(x) ! { dg-line l_loop_j[incr c_loop_j] } + ! { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } + ! { dg-note {variable 'x' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } do j = 0, 31 x = ieor(i, j * 3) - !$acc loop vector(length:32) - ! { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } + !$acc loop vector(length:32) ! { dg-line l_loop_k[incr c_loop_k] } + ! { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_k$c_loop_k } do k = 0, 31 arr(i * 1024 + j * 32 + k) = arr(i * 1024 + j * 32 + k) + x * k end do x = ior(i, j * 5) - !$acc loop vector(length:32) - ! { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } + !$acc loop vector(length:32) ! { dg-line l_loop_k[incr c_loop_k] } + ! { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_k$c_loop_k } do k = 0, 31 arr(i * 1024 + j * 32 + k) = arr(i * 1024 + j * 32 + k) + x * k end do end do end do !$acc end kernels + ! { dg-optimized {assigned OpenACC seq loop parallelism} {} { target *-*-* } l_compute$c_compute } do i = 0, 32 - 1 do j = 0, 32 -1 diff --git a/libgomp/testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-worker-5.f90 b/libgomp/testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-worker-5.f90 index d9dbb0736f3..4936e569b44 100644 --- a/libgomp/testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-worker-5.f90 +++ b/libgomp/testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-worker-5.f90 @@ -3,11 +3,19 @@ ! { dg-do run } -! { dg-additional-options "-fopt-info-note-omp" } +! { dg-additional-options "-fopt-info-omp-all" } +! { dg-additional-options "-foffload=-fopt-info-omp-all" } + ! { dg-additional-options "--param=openacc-privatization=noisy" } -! { dg-additional-options "-foffload=-fopt-info-note-omp" } ! { dg-additional-options "-foffload=--param=openacc-privatization=noisy" } -! for testing/documenting aspects of that functionality. + +! It's only with Tcl 8.5 (released in 2007) that "the variable 'varName' +! passed to 'incr' may be unset, and in that case, it will be set to [...]", +! so to maintain compatibility with earlier Tcl releases, we manually +! initialize counter variables: +! { dg-line l_dummy[variable c_compute 0 c_loop_i 0 c_loop_j 0 c_loop_k 0] } +! { dg-message "dummy" "" { target iN-VAl-Id } l_dummy } to avoid +! "WARNING: dg-line var l_dummy defined, but not used". program main integer :: i, j, k, idx, arr(0:32*32*32) @@ -18,34 +26,35 @@ program main arr(i) = i end do - !$acc kernels copy(arr) - !$acc loop gang(num:32) - ! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } + !$acc kernels copy(arr) ! { dg-line l_compute[incr c_compute] } + !$acc loop gang(num:32) ! { dg-line l_loop_i[incr c_loop_i] } + ! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } do i = 0, 31 - !$acc loop worker(num:8) private(x, p) - ! { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } - ! { dg-note {variable 'x' in 'private' clause is candidate for adjusting OpenACC privatization level} "" { target *-*-* } .-2 } - ! { dg-note {variable 'p' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-3 } + !$acc loop worker(num:8) private(x, p) ! { dg-line l_loop_j[incr c_loop_j] } + ! { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } + ! { dg-note {variable 'x' in 'private' clause is candidate for adjusting OpenACC privatization level} {} { target *-*-* } l_loop_j$c_loop_j } + ! { dg-note {variable 'p' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } do j = 0, 31 p => x x = ieor(i, j * 3) - !$acc loop vector(length:32) - ! { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } + !$acc loop vector(length:32) ! { dg-line l_loop_k[incr c_loop_k] } + ! { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_k$c_loop_k } do k = 0, 31 arr(i * 1024 + j * 32 + k) = arr(i * 1024 + j * 32 + k) + x * k end do p = ior(i, j * 5) - !$acc loop vector(length:32) - ! { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } + !$acc loop vector(length:32) ! { dg-line l_loop_k[incr c_loop_k] } + ! { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_k$c_loop_k } do k = 0, 31 arr(i * 1024 + j * 32 + k) = arr(i * 1024 + j * 32 + k) + x * k end do end do end do !$acc end kernels + ! { dg-optimized {assigned OpenACC seq loop parallelism} {} { target *-*-* } l_compute$c_compute } do i = 0, 32 - 1 do j = 0, 32 -1 diff --git a/libgomp/testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-worker-6.f90 b/libgomp/testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-worker-6.f90 index b4225c2bf47..6b2ec1a0047 100644 --- a/libgomp/testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-worker-6.f90 +++ b/libgomp/testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-worker-6.f90 @@ -3,11 +3,19 @@ ! { dg-do run } -! { dg-additional-options "-fopt-info-note-omp" } +! { dg-additional-options "-fopt-info-omp-all" } +! { dg-additional-options "-foffload=-fopt-info-omp-all" } + ! { dg-additional-options "--param=openacc-privatization=noisy" } -! { dg-additional-options "-foffload=-fopt-info-note-omp" } ! { dg-additional-options "-foffload=--param=openacc-privatization=noisy" } -! for testing/documenting aspects of that functionality. + +! It's only with Tcl 8.5 (released in 2007) that "the variable 'varName' +! passed to 'incr' may be unset, and in that case, it will be set to [...]", +! so to maintain compatibility with earlier Tcl releases, we manually +! initialize counter variables: +! { dg-line l_dummy[variable c_compute 0 c_loop_i 0 c_loop_j 0 c_loop_k 0] } +! { dg-message "dummy" "" { target iN-VAl-Id } l_dummy } to avoid +! "WARNING: dg-line var l_dummy defined, but not used". program main type vec2 @@ -21,31 +29,32 @@ program main arr(i) = i end do - !$acc kernels copy(arr) - !$acc loop gang(num:32) - ! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } + !$acc kernels copy(arr) ! { dg-line l_compute[incr c_compute] } + !$acc loop gang(num:32) ! { dg-line l_loop_i[incr c_loop_i] } + ! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } do i = 0, 31 - !$acc loop worker(num:8) private(pt) - ! { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } - ! { dg-note {variable 'pt' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-2 } + !$acc loop worker(num:8) private(pt) ! { dg-line l_loop_j[incr c_loop_j] } + ! { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } + ! { dg-note {variable 'pt' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } do j = 0, 31 pt%x = ieor(i, j * 3) pt%y = ior(i, j * 5) - !$acc loop vector(length:32) - ! { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } + !$acc loop vector(length:32) ! { dg-line l_loop_k[incr c_loop_k] } + ! { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_k$c_loop_k } do k = 0, 31 arr(i * 1024 + j * 32 + k) = arr(i * 1024 + j * 32 + k) + pt%x * k end do - !$acc loop vector(length:32) - ! { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } + !$acc loop vector(length:32) ! { dg-line l_loop_k[incr c_loop_k] } + ! { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_k$c_loop_k } do k = 0, 31 arr(i * 1024 + j * 32 + k) = arr(i * 1024 + j * 32 + k) + pt%y * k end do end do end do !$acc end kernels + ! { dg-optimized {assigned OpenACC seq loop parallelism} {} { target *-*-* } l_compute$c_compute } do i = 0, 32 - 1 do j = 0, 32 -1 diff --git a/libgomp/testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-worker-7.f90 b/libgomp/testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-worker-7.f90 index 76bbda72787..a90be1d45e8 100644 --- a/libgomp/testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-worker-7.f90 +++ b/libgomp/testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-worker-7.f90 @@ -3,11 +3,19 @@ ! { dg-do run } -! { dg-additional-options "-fopt-info-note-omp" } +! { dg-additional-options "-fopt-info-omp-all" } +! { dg-additional-options "-foffload=-fopt-info-omp-all" } + ! { dg-additional-options "--param=openacc-privatization=noisy" } -! { dg-additional-options "-foffload=-fopt-info-note-omp" } ! { dg-additional-options "-foffload=--param=openacc-privatization=noisy" } -! for testing/documenting aspects of that functionality. + +! It's only with Tcl 8.5 (released in 2007) that "the variable 'varName' +! passed to 'incr' may be unset, and in that case, it will be set to [...]", +! so to maintain compatibility with earlier Tcl releases, we manually +! initialize counter variables: +! { dg-line l_dummy[variable c_compute 0 c_loop_i 0 c_loop_j 0 c_loop_k 0] } +! { dg-message "dummy" "" { target iN-VAl-Id } l_dummy } to avoid +! "WARNING: dg-line var l_dummy defined, but not used". program main integer :: i, j, k, idx, arr(0:32*32*32), pt(2) @@ -16,31 +24,32 @@ program main arr(i) = i end do - !$acc kernels copy(arr) - !$acc loop gang(num:32) - ! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } + !$acc kernels copy(arr) ! { dg-line l_compute[incr c_compute] } + !$acc loop gang(num:32) ! { dg-line l_loop_i[incr c_loop_i] } + ! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_i$c_loop_i } do i = 0, 31 - !$acc loop worker(num:8) private(pt) - ! { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } - ! { dg-note {variable 'pt' in 'private' clause is candidate for adjusting OpenACC privatization level} "" { target *-*-* } .-2 } + !$acc loop worker(num:8) private(pt) ! { dg-line l_loop_j[incr c_loop_j] } + ! { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_j$c_loop_j } + ! { dg-note {variable 'pt' in 'private' clause is candidate for adjusting OpenACC privatization level} {} { target *-*-* } l_loop_j$c_loop_j } do j = 0, 31 pt(1) = ieor(i, j * 3) pt(2) = ior(i, j * 5) - !$acc loop vector(length:32) - ! { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } + !$acc loop vector(length:32) ! { dg-line l_loop_k[incr c_loop_k] } + ! { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_k$c_loop_k } do k = 0, 31 arr(i * 1024 + j * 32 + k) = arr(i * 1024 + j * 32 + k) + pt(1) * k end do - !$acc loop vector(length:32) - ! { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } + !$acc loop vector(length:32) ! { dg-line l_loop_k[incr c_loop_k] } + ! { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop_k$c_loop_k } do k = 0, 31 arr(i * 1024 + j * 32 + k) = arr(i * 1024 + j * 32 + k) + pt(2) * k end do end do end do !$acc end kernels + ! { dg-optimized {assigned OpenACC seq loop parallelism} {} { target *-*-* } l_compute$c_compute } do i = 0, 32 - 1 do j = 0, 32 -1 -- 2.34.1