From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 116039 invoked by alias); 18 Jun 2019 22:26:05 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 116031 invoked by uid 89); 18 Jun 2019 22:26:05 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-16.2 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham version=3.3.1 spammy=r272445 X-HELO: relay1.mentorg.com Received: from relay1.mentorg.com (HELO relay1.mentorg.com) (192.94.38.131) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 18 Jun 2019 22:26:03 +0000 Received: from svr-orw-mbx-05.mgc.mentorg.com ([147.34.90.205]) by relay1.mentorg.com with esmtps (TLSv1.2:ECDHE-RSA-AES256-SHA384:256) id 1hdMYE-0002ZL-7M from Thomas_Schwinge@mentor.com for gcc-patches@gcc.gnu.org; Tue, 18 Jun 2019 15:26:02 -0700 Received: from svr-orw-mbx-08.mgc.mentorg.com (147.34.90.208) by SVR-ORW-MBX-05.mgc.mentorg.com (147.34.90.205) with Microsoft SMTP Server (TLS) id 15.0.1320.4; Tue, 18 Jun 2019 15:25:59 -0700 Received: from tftp-cs (147.34.91.1) by svr-orw-mbx-08.mgc.mentorg.com (147.34.90.208) with Microsoft SMTP Server id 15.0.1320.4 via Frontend Transport; Tue, 18 Jun 2019 15:25:59 -0700 Received: by tftp-cs (Postfix, from userid 49978) id 53E9DC2212; Tue, 18 Jun 2019 15:25:59 -0700 (PDT) From: Thomas Schwinge To: Subject: [committed] [PR90868] Document status quo for duplicate OpenACC 'declare' directives for 'extern' variables User-Agent: Notmuch/0.9-125-g4686d11 (http://notmuchmail.org) Emacs/26.1 (x86_64-pc-linux-gnu) Date: Tue, 18 Jun 2019 22:26:00 -0000 Message-ID: <874l4mh6oi.fsf@euler.schwinge.homeip.net> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="==-=-="; micalg=pgp-sha512; protocol="application/pgp-signature" X-SW-Source: 2019-06/txt/msg01087.txt.bz2 --==-=-= Content-Type: multipart/mixed; boundary="=-=-=" --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Content-length: 203 Hi! This doesn't resolve PR90868, but at least in trunk r272445 we now "Document status quo for duplicate OpenACC 'declare' directives for 'extern' variables", see attached. Gr=C3=BC=C3=9Fe Thomas --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=0001-PR90868-Document-status-quo-for-duplicate-Open.trunk.patch Content-Transfer-Encoding: quoted-printable Content-length: 6905 =46rom 267951437cde77a09e62d9c151002eeed3cf457c Mon Sep 17 00:00:00 2001 From: tschwinge Date: Tue, 18 Jun 2019 22:14:04 +0000 Subject: [PATCH] [PR90868] Document status quo for duplicate OpenACC 'decla= re' directives for 'extern' variables gcc/testsuite/ PR testsuite/90868 * c-c++-common/goacc/declare-1.c: Update. * c-c++-common/goacc/declare-2.c: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@272445 138bc75d-0d04-0410-9= 61f-82ee72b054a4 --- gcc/testsuite/ChangeLog | 4 + gcc/testsuite/c-c++-common/goacc/declare-1.c | 85 ++++++++++++++++- gcc/testsuite/c-c++-common/goacc/declare-2.c | 99 ++++++++++++++++++++ 3 files changed, 187 insertions(+), 1 deletion(-) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 473fd66d39fd..981055838ab6 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,9 @@ 2019-06-18 Thomas Schwinge =20 + PR testsuite/90868 + * c-c++-common/goacc/declare-1.c: Update. + * c-c++-common/goacc/declare-2.c: Likewise. + PR middle-end/90862 * c-c++-common/goacc/declare-1.c: Update. * c-c++-common/goacc/declare-2.c: Likewise. diff --git a/gcc/testsuite/c-c++-common/goacc/declare-1.c b/gcc/testsuite/c= -c++-common/goacc/declare-1.c index 7c4380f4f041..46ee01b67595 100644 --- a/gcc/testsuite/c-c++-common/goacc/declare-1.c +++ b/gcc/testsuite/c-c++-common/goacc/declare-1.c @@ -96,6 +96,84 @@ f (void) } =20 =20 +/* The same as 'f'. */ + +void +f_2 (void) +{ + int va0; +#pragma acc declare create(va0) + + int va1; +#pragma acc declare copyin(va1) + + int *va2; +#pragma acc declare deviceptr(va2) + + int va3; +#pragma acc declare device_resident(va3) + +#ifndef __cplusplus + /* TODO PR90868 + + C: "error: variable '[...]' used more than once with '#pragma acc dec= lare'". */ +#else + extern int ve0; +#pragma acc declare create(ve0) + + extern int ve1; +#pragma acc declare copyin(ve1) + + extern int *ve2; +#pragma acc declare deviceptr(ve2) + + extern int ve3; +#pragma acc declare device_resident(ve3) + + extern int ve4; +#pragma acc declare link(ve4) + + extern int ve5; +#pragma acc declare present_or_copyin(ve5) +=20 + extern int ve6; +#pragma acc declare present_or_create(ve6) +#endif + + int va5; +#pragma acc declare copy(va5) + + int va6; +#pragma acc declare copyout(va6) + + int va7; +#pragma acc declare present(va7) + + int va8; +#pragma acc declare present_or_copy(va8) + + int va9; +#pragma acc declare present_or_copyin(va9) + + int va10; +#pragma acc declare present_or_copyout(va10) + + int va11; +#pragma acc declare present_or_create(va11) + + a: + { + int va0; +#pragma acc declare create(va0) + if (v1) + goto a; + else + goto b; + } + b:; +} + + /* The same as 'f' but everything contained in an OpenACC 'data' construct= . */ =20 void @@ -115,7 +193,12 @@ f_data (void) int va3; # pragma acc declare device_resident(va3) =20 -#if 0 /* TODO */ +#if 0 + /* TODO PR90868 + + C: "error: variable '[...]' used more than once with '#pragma acc d= eclare'". + C++: ICE during gimplification. */ + extern int ve0; # pragma acc declare create(ve0) =20 diff --git a/gcc/testsuite/c-c++-common/goacc/declare-2.c b/gcc/testsuite/c= -c++-common/goacc/declare-2.c index af43b6bc8162..e2e22be57e9e 100644 --- a/gcc/testsuite/c-c++-common/goacc/declare-2.c +++ b/gcc/testsuite/c-c++-common/goacc/declare-2.c @@ -96,3 +96,102 @@ f_data (void) # pragma acc declare present (v2) /* { dg-error "invalid use of" } */ } } + + +/* Testing for PR90868 "Duplicate OpenACC 'declare' directives for 'extern' + variables". */ + + +void +f_pr90868 (void) +{ + extern int we0; +#pragma acc declare create(we0) + + extern int we1; +#pragma acc declare copyin(we1) + + extern int *we2; +#pragma acc declare deviceptr(we2) + + extern int we3; +#pragma acc declare device_resident(we3) + + extern int we4; +#pragma acc declare link(we4) + + extern int we5; +#pragma acc declare present_or_copyin(we5) +=20 + extern int we6; +#pragma acc declare present_or_create(we6) +} + + +/* The same as 'f_pr90868'. */ + +/* The errors are emitted for C only; for C++, the duplicate OpenACC 'decl= are' + directives for 'extern' variables are accepted. */ + +void +f_pr90868_2 (void) +{ + extern int we0; +#pragma acc declare create(we0) /* { dg-error "variable 'we0' used more th= an once with '#pragma acc declare'" "" { target c } } */ + + extern int we1; +#pragma acc declare copyin(we1) /* { dg-error "variable 'we1' used more th= an once with '#pragma acc declare'" "" { target c } } */ + + extern int *we2; +#pragma acc declare deviceptr(we2) /* { dg-error "variable 'we2' used more= than once with '#pragma acc declare'" "" { target c } } */ + + extern int we3; +#pragma acc declare device_resident(we3) /* { dg-error "variable 'we3' use= d more than once with '#pragma acc declare'" "" { target c } } */ + + extern int we4; +#pragma acc declare link(we4) /* { dg-error "variable 'we4' used more than= once with '#pragma acc declare'" "" { target c } } */ + + extern int we5; +#pragma acc declare present_or_copyin(we5) /* { dg-error "variable 'we5' u= sed more than once with '#pragma acc declare'" "" { target c } } */ +=20 + extern int we6; +#pragma acc declare present_or_create(we6) /* { dg-error "variable 'we6' u= sed more than once with '#pragma acc declare'" "" { target c } } */ +} + + +/* The same as 'f_pr90868' but everything contained in an OpenACC 'data' + construct. */ + +#ifdef __cplusplus +/* TODO PR90868 + + C++: ICE during gimplification. */ +#else +void +f_pr90868_data (void) +{ +#pragma acc data + { + extern int we0; +# pragma acc declare create(we0) /* { dg-error "variable 'we0' used more t= han once with '#pragma acc declare'" "" { target c } } */ + + extern int we1; +# pragma acc declare copyin(we1) /* { dg-error "variable 'we1' used more t= han once with '#pragma acc declare'" "" { target c } } */ + + extern int *we2; +# pragma acc declare deviceptr(we2) /* { dg-error "variable 'we2' used mor= e than once with '#pragma acc declare'" "" { target c } } */ + + extern int we3; +# pragma acc declare device_resident(we3) /* { dg-error "variable 'we3' us= ed more than once with '#pragma acc declare'" "" { target c } } */ + + extern int we4; +# pragma acc declare link(we4) /* { dg-error "variable 'we4' used more tha= n once with '#pragma acc declare'" "" { target c } } */ + + extern int we5; +# pragma acc declare present_or_copyin(we5) /* { dg-error "variable 'we5' = used more than once with '#pragma acc declare'" "" { target c } } */ +=20 + extern int we6; +# pragma acc declare present_or_create(we6) /* { dg-error "variable 'we6' = used more than once with '#pragma acc declare'" "" { target c } } */ + } +} +#endif --=20 2.20.1 --=-=-=-- --==-=-= Content-Type: application/pgp-signature; name="signature.asc" Content-length: 658 -----BEGIN PGP SIGNATURE----- iQGzBAEBCgAdFiEEU9WEfWKGQazCmycCAKI7+41Q4XkFAl0JZO0ACgkQAKI7+41Q 4XmVqQv/dLZ2uB6FhBSer0IATmbPd8eoUvR+Tb59nXTbgwSXDSMmTr+MuhbRcQau nacXJ4NdyG89Fx27dpiREAf2oUjYyQU/HSHL14GorjeHfZJ3uEi8bH+LWNwpj2Ky /5vvyOvMjzxnuu8mrSR42D0IDpi6aGx+Lrrg3bD+FuVsIkSVdCXeJrTwQu+5XNsg xtzHCxogCxtPicAcEEqGp86e324Qlh24c17pRBatkvnvUSAocUr+mrreG4c6v9eD HsNu3/rAPQLP5fOlchPgz+5nzkk7aMs2lXGsT2fnc2MaEHAqsWqZutJirNX2TWTX VMhVfyBwAG6akB2EAymTx5nkE/1LMzz/eCSF0K4LKMrtUA8VUqQvSnXHHrqUFxST QIAGbA0dqO5WoZgbBM+TT11eONUI6e445n5D7HxQSyyL7lHut9K6YtII/tM7qgE1 DsWmX+sQIcJxKN7W1NUaEBPJZ2lu6yhtCiFJJjwGXsbqMO/mlCuzDKcY8TJ04Xaf RzMZlSlj =tHrK -----END PGP SIGNATURE----- --==-=-=--