From patchwork Tue Nov 11 15:01:00 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Thomas Schwinge X-Patchwork-Id: 409499 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org 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 72F321400E2 for ; Wed, 12 Nov 2014 02:01:34 +1100 (AEDT) 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=P2jVJTqAV/YW93jB yx0onDeSNrieREJkVQNqXGoIMNN9OblUe6DQe9Wwj3B5Va6/hPaytfAOdRio840e LgZHbJ7LwM/VD9D/xOs7v/ubum26ev6tn/nqB01IKfFEi2GjiljaE3PxzS7ez/VT Pmx7giVlXDxopBpol7VVzcFrGgw= 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=MtB+8FobNeJA9RskG86I14 /Sh2E=; b=lqdV0nDojWIYPuOtQnpb+8mRiZtnGmxJ7V2FewLdy/c7PORKrVeno9 AxYKPhwG8yF+7ZwOlO2bi92503U54XFCmRBlTLNsDl52TOQ2tST7koS+CvLteL+y K3lFzge2MHIyui9JxasblWocsfauD/vMkECLYz5Qq7T+o5LCEspPg= Received: (qmail 13881 invoked by alias); 11 Nov 2014 15:01:21 -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 13852 invoked by uid 89); 11 Nov 2014 15:01:19 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.0 required=5.0 tests=AWL, BAYES_00, RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.2 X-Spam-User: qpsmtpd, 2 recipients 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, 11 Nov 2014 15:01:17 +0000 Received: from nat-ies.mentorg.com ([192.94.31.2] helo=SVR-IES-FEM-01.mgc.mentorg.com) by relay1.mentorg.com with esmtp id 1XoCwS-0002Xi-S1 from Thomas_Schwinge@mentor.com ; Tue, 11 Nov 2014 07:01:13 -0800 Received: from feldtkeller.schwinge.homeip.net (137.202.0.76) by SVR-IES-FEM-01.mgc.mentorg.com (137.202.0.104) with Microsoft SMTP Server id 14.3.181.6; Tue, 11 Nov 2014 15:01:11 +0000 From: Thomas Schwinge To: , CC: Cesar Philippidis , Ilmir Usmanov , Ilmir Usmanov , Jakub Jelinek , Tobias Burnus Subject: [gomp4] Re: FWD: Re: OpenACC subarray specifications in the GCC Fortran front end In-Reply-To: <53D681BE.6010806@codesourcery.com> References: <87ha4p92qj.fsf@schwinge.name> <53763254.1000402@samsung.com> <537DA7CD.4050407@samsung.com> <87fvi8p5mp.fsf@schwinge.name> <20140711102920.GR31640@tucnak.redhat.com> <53D05678.3080501@codesourcery.com> <87a97yrjf7.fsf@schwinge.name> <53D18C3D.2000609@codesourcery.com> <87tx65pgvj.fsf@schwinge.name> <53D681BE.6010806@codesourcery.com> User-Agent: Notmuch/0.9-101-g81dad07 (http://notmuchmail.org) Emacs/24.3.1 (x86_64-pc-linux-gnu) Date: Tue, 11 Nov 2014 16:01:00 +0100 Message-ID: <87fvdppys3.fsf@schwinge.name> MIME-Version: 1.0 Hi! On Mon, 28 Jul 2014 10:00:46 -0700, Cesar Philippidis wrote: > On 07/25/2014 09:01 AM, Thomas Schwinge wrote: > > [...] you may directly fold in the following patch to nuke the > > unused OMP_LIST_COPY (or do that later). > > --- gcc/fortran/dump-parse-tree.c > > +++ gcc/fortran/dump-parse-tree.c > > @@ -1257,7 +1257,6 @@ show_omp_clauses (gfc_omp_clauses *omp_clauses) > > const char *type = NULL; > > switch (list_type) > > { > > - case OMP_LIST_COPY: type = "COPY"; break; > > case OMP_LIST_DEVICEPTR: type = "DEVICEPTR"; break; > > case OMP_LIST_USE_DEVICE: type = "USE_DEVICE"; break; > > case OMP_LIST_DEVICE_RESIDENT: type = "USE_DEVICE"; break; > > --- gcc/fortran/gfortran.h > > +++ gcc/fortran/gfortran.h > > @@ -1157,9 +1157,8 @@ enum > > OMP_LIST_TO, > > OMP_LIST_FROM, > > OMP_LIST_REDUCTION, > > - OMP_LIST_COPY, > > - OMP_LIST_DATA_CLAUSE_FIRST = OMP_LIST_COPY, > > OMP_LIST_DEVICEPTR, > > + OMP_LIST_DATA_CLAUSE_FIRST = OMP_LIST_DEVICEPTR, > > OMP_LIST_DATA_CLAUSE_LAST = OMP_LIST_DEVICEPTR, > > OMP_LIST_DEVICE_RESIDENT, > > OMP_LIST_USE_DEVICE, > > I'll take care of this separately. I have now committed the following to gomp-4_0-branch in r217353: commit 782a3dab5694d561f80bda7a29000250a681781a Author: tschwinge Date: Tue Nov 11 14:52:16 2014 +0000 Fortran OMP_LIST_* maintenance. gcc/fortran/ * gfortran.h (OMP_LIST_COPY, OMP_LIST_DATA_CLAUSE_FIRST) (OMP_LIST_DATA_CLAUSE_LAST, OMP_LIST_LAST): Remove. * dump-parse-tree.c (show_omp_clauses): Update. * openmp.c (resolve_omp_clauses, gfc_resolve_oacc_declare): Likewise. * trans-openmp.c (gfc_trans_omp_clauses): Likewise. (gfc_trans_omp_map_clause_list): Remove. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gomp-4_0-branch@217353 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/fortran/ChangeLog.gomp | 8 ++++++++ gcc/fortran/dump-parse-tree.c | 1 - gcc/fortran/gfortran.h | 6 +----- gcc/fortran/openmp.c | 42 ++++++++++-------------------------------- gcc/fortran/trans-openmp.c | 31 ------------------------------- 5 files changed, 19 insertions(+), 69 deletions(-) Grüße, Thomas diff --git gcc/fortran/ChangeLog.gomp gcc/fortran/ChangeLog.gomp index 1ae1d31..f846890 100644 --- gcc/fortran/ChangeLog.gomp +++ gcc/fortran/ChangeLog.gomp @@ -1,5 +1,13 @@ 2014-11-11 Thomas Schwinge + * gfortran.h (OMP_LIST_COPY, OMP_LIST_DATA_CLAUSE_FIRST) + (OMP_LIST_DATA_CLAUSE_LAST, OMP_LIST_LAST): Remove. + * dump-parse-tree.c (show_omp_clauses): Update. + * openmp.c (resolve_omp_clauses, gfc_resolve_oacc_declare): + Likewise. + * trans-openmp.c (gfc_trans_omp_clauses): Likewise. + (gfc_trans_omp_map_clause_list): Remove. + * gfortran.h (OMP_LIST_DEVICEPTR): Remove, and instead... (enum gfc_omp_map_op): ... add OMP_MAP_FORCE_DEVICEPTR here. * dump-parse-tree.c (show_omp_clauses): Update. diff --git gcc/fortran/dump-parse-tree.c gcc/fortran/dump-parse-tree.c index e7aff22..e9d04e7 100644 --- gcc/fortran/dump-parse-tree.c +++ gcc/fortran/dump-parse-tree.c @@ -1251,7 +1251,6 @@ show_omp_clauses (gfc_omp_clauses *omp_clauses) const char *type = NULL; switch (list_type) { - case OMP_LIST_COPY: type = "COPY"; break; case OMP_LIST_USE_DEVICE: type = "USE_DEVICE"; break; case OMP_LIST_DEVICE_RESIDENT: type = "USE_DEVICE"; break; case OMP_LIST_CACHE: type = ""; break; diff --git gcc/fortran/gfortran.h gcc/fortran/gfortran.h index 18adbee..aed37d3 100644 --- gcc/fortran/gfortran.h +++ gcc/fortran/gfortran.h @@ -1183,14 +1183,10 @@ enum OMP_LIST_TO, OMP_LIST_FROM, OMP_LIST_REDUCTION, - OMP_LIST_COPY, - OMP_LIST_DATA_CLAUSE_FIRST = OMP_LIST_COPY, - OMP_LIST_DATA_CLAUSE_LAST = OMP_LIST_DATA_CLAUSE_FIRST, OMP_LIST_DEVICE_RESIDENT, OMP_LIST_USE_DEVICE, OMP_LIST_CACHE, - OMP_LIST_NUM, - OMP_LIST_LAST = OMP_LIST_NUM + OMP_LIST_NUM }; /* Because a symbol can belong to multiple namelists, they must be diff --git gcc/fortran/openmp.c gcc/fortran/openmp.c index 82726b8..47c146e 100644 --- gcc/fortran/openmp.c +++ gcc/fortran/openmp.c @@ -2870,11 +2870,8 @@ resolve_omp_clauses (gfc_code *code, locus *where, static const char *clause_names[] = { "PRIVATE", "FIRSTPRIVATE", "LASTPRIVATE", "COPYPRIVATE", "SHARED", "COPYIN", "UNIFORM", "ALIGNED", "LINEAR", "DEPEND", "MAP", - "TO", "FROM", "REDUCTION", - "COPY", "COPYIN", "COPYOUT", "CREATE", "DELETE", "PRESENT", - "PRESENT_OR_COPY", "PRESENT_OR_COPYIN", "PRESENT_OR_COPYOUT", - "PRESENT_OR_CREATE", "DEVICE_RESIDENT", "USE_DEVICE", - "HOST", "DEVICE", "CACHE" }; + "TO", "FROM", "REDUCTION", "DEVICE_RESIDENT", "USE_DEVICE", + "CACHE" }; if (omp_clauses == NULL) return; @@ -3231,15 +3228,6 @@ resolve_omp_clauses (gfc_code *code, locus *where, break; } - if (list >= OMP_LIST_DATA_CLAUSE_FIRST - && list < OMP_LIST_DATA_CLAUSE_LAST) - resolve_oacc_data_clauses (n->sym, *where, name); - - if (list > OMP_LIST_DATA_CLAUSE_LAST) - { - check_symbol_not_pointer (n->sym, *where, name); - check_array_not_assumed (n->sym, *where, name); - } switch (list) { case OMP_LIST_REDUCTION: @@ -3391,6 +3379,11 @@ resolve_omp_clauses (gfc_code *code, locus *where, if (n->sym->attr.cray_pointee) gfc_error ("Cray pointee object '%s' in %s clause at %L", n->sym->name, name, where); + /* FALLTHRU */ + case OMP_LIST_DEVICE_RESIDENT: + case OMP_LIST_CACHE: + check_symbol_not_pointer (n->sym, *where, name); + check_array_not_assumed (n->sym, *where, name); break; default: break; @@ -4618,10 +4611,6 @@ gfc_resolve_oacc_declare (gfc_namespace *ns) int list; gfc_omp_namelist *n; locus loc; - static const char *clause_names[] = {"COPY", "COPYIN", "COPYOUT", "CREATE", - "DELETE", "PRESENT", "PRESENT_OR_COPY", "PRESENT_OR_COPYIN", - "PRESENT_OR_COPYOUT", "PRESENT_OR_CREATE", - "DEVICE_RESIDENT"}; if (ns->oacc_declare_clauses == NULL) return; @@ -4629,7 +4618,7 @@ gfc_resolve_oacc_declare (gfc_namespace *ns) loc = ns->oacc_declare_clauses->ext.loc; /* FIXME: handle omp_list_map. */ - for (list = OMP_LIST_DATA_CLAUSE_FIRST; + for (/* TODO */ list = OMP_LIST_DEVICE_RESIDENT; list <= OMP_LIST_DEVICE_RESIDENT; list++) for (n = ns->oacc_declare_clauses->lists[list]; n; n = n->next) { @@ -4638,7 +4627,7 @@ gfc_resolve_oacc_declare (gfc_namespace *ns) gfc_error ("PARAMETER object '%s' is not allowed at %L", n->sym->name, &loc); } - for (list = OMP_LIST_DATA_CLAUSE_FIRST; + for (/* TODO */ list = OMP_LIST_DEVICE_RESIDENT; list <= OMP_LIST_DEVICE_RESIDENT; list++) for (n = ns->oacc_declare_clauses->lists[list]; n; n = n->next) { @@ -4649,20 +4638,9 @@ gfc_resolve_oacc_declare (gfc_namespace *ns) n->sym->mark = 1; } - for (list = OMP_LIST_DATA_CLAUSE_FIRST; - list < OMP_LIST_DATA_CLAUSE_LAST; /* Skip deviceptr clause. */ - list++) - { - const char *name = clause_names[list - OMP_LIST_DATA_CLAUSE_FIRST]; - for (n = ns->oacc_declare_clauses->lists[list]; n; n = n->next) - resolve_oacc_data_clauses (n->sym, loc, name); - } - for (n = ns->oacc_declare_clauses->lists[OMP_LIST_DEVICE_RESIDENT]; n; n = n->next) - check_array_not_assumed (n->sym, loc, - clause_names[OMP_LIST_DEVICE_RESIDENT - - OMP_LIST_DATA_CLAUSE_FIRST]); + check_array_not_assumed (n->sym, loc, "DEVICE_RESIDENT"); } diff --git gcc/fortran/trans-openmp.c gcc/fortran/trans-openmp.c index c1cf5a9..6967c4f 100644 --- gcc/fortran/trans-openmp.c +++ gcc/fortran/trans-openmp.c @@ -1707,25 +1707,6 @@ gfc_trans_omp_reduction_list (gfc_omp_namelist *namelist, tree list, return list; } -static tree -gfc_trans_omp_map_clause_list (enum omp_clause_map_kind kind, - gfc_omp_namelist *namelist, tree list) -{ - for (; namelist != NULL; namelist = namelist->next) - if (namelist->sym->attr.referenced) - { - tree t = gfc_trans_omp_variable (namelist->sym, false); - if (t != error_mark_node) - { - tree node = build_omp_clause (input_location, OMP_CLAUSE_MAP); - OMP_CLAUSE_DECL (node) = t; - OMP_CLAUSE_MAP_KIND (node) = kind; - list = gfc_trans_add_clause (node, list); - } - } - return list; -} - static inline tree gfc_convert_expr_to_tree (stmtblock_t *block, gfc_expr *expr) { @@ -1759,18 +1740,6 @@ gfc_trans_omp_clauses (stmtblock_t *block, gfc_omp_clauses *clauses, if (n == NULL) continue; - if (list >= OMP_LIST_DATA_CLAUSE_FIRST - && list <= OMP_LIST_DATA_CLAUSE_LAST) - { - enum omp_clause_map_kind kind; - switch (list) - { - default: - gcc_unreachable (); - } - omp_clauses = gfc_trans_omp_map_clause_list (kind, n, omp_clauses); - continue; - } switch (list) { case OMP_LIST_REDUCTION: