From patchwork Tue Jun 18 23:02:15 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Thomas Schwinge X-Patchwork-Id: 1118380 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=gcc.gnu.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=gcc-patches-return-503230-incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.b="De7JRr8t"; dkim-atps=neutral Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 45T3Wr4mzVz9s4Y for ; Wed, 19 Jun 2019 09:02:44 +1000 (AEST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :to:cc:subject:in-reply-to:references:date:message-id :mime-version:content-type; q=dns; s=default; b=gIaMKcPMyUZms/Y0 t/wGG0uCqwHncCJbL1WMsKbZy0ZCLqB9AWAvuRCr/zkLMPSaly4/YPJ5bK1OScgF ra0UCQVGH4ZYBH2UbM/XgIVQScO16GnlxiHqHvpWUOuUmCMlRa0QLobjMRrk28gW D52KsTkCFS638HV1AJoPKyUZ1bA= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :to:cc:subject:in-reply-to:references:date:message-id :mime-version:content-type; s=default; bh=oFLe2dviKR8CqeSBeqQm9a DrzUs=; b=De7JRr8t5cWjcGA9TB8RhoCqfRwUttZj46WqNu+X6u0ixweoi6u6np QMarn0tEry4EBu32Nxk5BXF/SuR8lJ1Vvn4wkOEU7eq8lgrNjI/bYggNbepeheDM NQw4vWORAvHoR7tXd0T+PMb5NlLmvsxg15h5jHF7crTxfjdSXCvcc= Received: (qmail 51679 invoked by alias); 18 Jun 2019 23:02:31 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 51656 invoked by uid 89); 18 Jun 2019 23:02:31 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-16.7 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 spammy=U*tkoenig, verison, tkoenig@gcc.gnu.org, tkoeniggccgnuorg 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 23:02:29 +0000 Received: from svr-orw-mbx-06.mgc.mentorg.com ([147.34.90.206]) by relay1.mentorg.com with esmtps (TLSv1.2:ECDHE-RSA-AES256-SHA384:256) id 1hdN7T-0005dh-Eg from Thomas_Schwinge@mentor.com ; Tue, 18 Jun 2019 16:02:27 -0700 Received: from svr-orw-mbx-04.mgc.mentorg.com (147.34.90.204) by SVR-ORW-MBX-06.mgc.mentorg.com (147.34.90.206) with Microsoft SMTP Server (TLS) id 15.0.1320.4; Tue, 18 Jun 2019 16:02:25 -0700 Received: from tftp-cs (147.34.91.1) by svr-orw-mbx-04.mgc.mentorg.com (147.34.90.204) with Microsoft SMTP Server id 15.0.1320.4 via Frontend Transport; Tue, 18 Jun 2019 16:02:25 -0700 Received: by tftp-cs (Postfix, from userid 49978) id A8BDDC2212; Tue, 18 Jun 2019 16:02:24 -0700 (PDT) From: Thomas Schwinge To: , CC: Jakub Jelinek , Tom de Vries Subject: [committed] [PR85221] Set 'omp declare target', 'omp declare target link' attributes for Fortran OpenACC 'declare'd variables (was: [gomp4] Re: OpenACC declare directive updates) In-Reply-To: <87lh9jptak.fsf@kepler.schwinge.homeip.net> References: <5637692F.7050306@codesourcery.com> <5639FAC0.2090104@codesourcery.com> <20151106193127.GI5675@tucnak.redhat.com> <563D0345.7010208@codesourcery.com> <20151106194909.GK5675@tucnak.redhat.com> <878u5n7pqk.fsf@hertz.schwinge.homeip.net> <56451FE6.3040200@codesourcery.com> <20151122185949.GA53877@troutmask.apl.washington.edu> <564DF738.80706@codesourcery.com> <87lh9jptak.fsf@kepler.schwinge.homeip.net> User-Agent: Notmuch/0.9-125-g4686d11 (http://notmuchmail.org) Emacs/26.1 (x86_64-pc-linux-gnu) Date: Wed, 19 Jun 2019 01:02:15 +0200 Message-ID: <87k1difqfc.fsf@euler.schwinge.homeip.net> MIME-Version: 1.0 Hi! On Fri, 27 Nov 2015 12:37:23 +0100, I wrote: > On Thu, 19 Nov 2015 10:22:16 -0600, James Norris wrote: > > [...] > Merging your trunk r230722 and r230725 with the existing Fortran OpenACC > declare implementation present on gomp-4_0-branch, I effectively applied > the following to gomp-4_0-branch in 231002. Please verify this. > > Regarding my Fortran XFAIL comments in > , > with some of my earlier changes "#if 0"ed in > gcc/fortran/trans-decl.c:add_attributes_to_decl, > libgomp.oacc-fortran/declare-3.f90 again PASSes. But I don't understand > (why something like) this code (isn't needed/done differently in C/C++). There remains a lot of mystery to be resolved regarding the OpenACC 'declare' implementation... :-( > --- gcc/fortran/trans-decl.c > +++ gcc/fortran/trans-decl.c > @@ -1302,15 +1302,20 @@ add_attributes_to_decl (symbol_attribute sym_attr, tree list) > } > > if (sym_attr.omp_declare_target > +#if 0 /* TODO */ > || sym_attr.oacc_declare_create > || sym_attr.oacc_declare_copyin > || sym_attr.oacc_declare_deviceptr > - || sym_attr.oacc_declare_device_resident) > + || sym_attr.oacc_declare_device_resident > +#endif > + ) > list = tree_cons (get_identifier ("omp declare target"), > NULL_TREE, list); > +#if 0 /* TODO */ > if (sym_attr.oacc_declare_link) > list = tree_cons (get_identifier ("omp declare target link"), > NULL_TREE, list); > +#endif As PR85221 "[openacc] ICE in install_var_field, at omp-low.c:657" tells us, yes, these are actually necessary. I'm confused why not all OpenACC 'declare' clauses are handled here, but looking into that is for another day, or week. Committed to trunk in r272453 "[PR85221] Set 'omp declare target', 'omp declare target link' attributes for Fortran OpenACC 'declare'd variables", see attached. Grüße Thomas From b7194d24d942998da2ab8f6f5dc080e3fff81972 Mon Sep 17 00:00:00 2001 From: tschwinge Date: Tue, 18 Jun 2019 22:15:43 +0000 Subject: [PATCH] [PR85221] Set 'omp declare target', 'omp declare target link' attributes for Fortran OpenACC 'declare'd variables gcc/fortran/ PR fortran/85221 * trans-decl.c (add_attributes_to_decl): Handle OpenACC 'declare' directive. gcc/testsuite/ PR fortran/85221 * gfortran.dg/goacc/declare-3.f95: New file. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@272453 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/fortran/ChangeLog | 6 +++ gcc/fortran/trans-decl.c | 9 +++- gcc/testsuite/ChangeLog | 3 ++ gcc/testsuite/gfortran.dg/goacc/declare-3.f95 | 47 +++++++++++++++++++ 4 files changed, 63 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/gfortran.dg/goacc/declare-3.f95 diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index d30fa2e50a88..6fd97b61ce05 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2019-06-18 Thomas Schwinge + + PR fortran/85221 + * trans-decl.c (add_attributes_to_decl): Handle OpenACC 'declare' + directive. + 2019-06-16 Thomas Koenig * dump_parse_tree (debug): Add verison for formal arglist. diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c index b8e07274febd..f504c279c31b 100644 --- a/gcc/fortran/trans-decl.c +++ b/gcc/fortran/trans-decl.c @@ -1432,10 +1432,15 @@ add_attributes_to_decl (symbol_attribute sym_attr, tree list) list = oacc_replace_fn_attrib_attr (list, dims); } - if (sym_attr.omp_declare_target_link) + if (sym_attr.omp_declare_target_link + || sym_attr.oacc_declare_link) list = tree_cons (get_identifier ("omp declare target link"), NULL_TREE, list); - else if (sym_attr.omp_declare_target) + else if (sym_attr.omp_declare_target + || sym_attr.oacc_declare_create + || sym_attr.oacc_declare_copyin + || sym_attr.oacc_declare_deviceptr + || sym_attr.oacc_declare_device_resident) list = tree_cons (get_identifier ("omp declare target"), clauses, list); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 59d39e8c179a..552ccc6fbd68 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,8 @@ 2019-06-18 Thomas Schwinge + PR fortran/85221 + * gfortran.dg/goacc/declare-3.f95: New file. + PR middle-end/90859 * c-c++-common/goacc/firstprivate-mappings-1.c: Update. diff --git a/gcc/testsuite/gfortran.dg/goacc/declare-3.f95 b/gcc/testsuite/gfortran.dg/goacc/declare-3.f95 new file mode 100644 index 000000000000..ec5d4c5a062a --- /dev/null +++ b/gcc/testsuite/gfortran.dg/goacc/declare-3.f95 @@ -0,0 +1,47 @@ +! Test valid usage of the OpenACC 'declare' directive. + +module mod_a + implicit none + integer :: a + !$acc declare create (a) +end module + +module mod_b + implicit none + integer :: b + !$acc declare copyin (b) +end module + +module mod_c + implicit none + integer :: c + !$acc declare deviceptr (c) +end module + +module mod_d + implicit none + integer :: d + !$acc declare device_resident (d) +end module + +module mod_e + implicit none + integer :: e + !$acc declare link (e) +end module + +subroutine sub1 + use mod_a + use mod_b + use mod_c + use mod_d + use mod_e +end subroutine sub1 + +program test + use mod_a + use mod_b + use mod_c + use mod_d + use mod_e +end program test -- 2.20.1