From patchwork Wed Mar 12 13:46:22 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Thomas Schwinge X-Patchwork-Id: 329455 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 E15042C00CE for ; Thu, 13 Mar 2014 00:46:40 +1100 (EST) 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=UDD/TRBaET/JmxIY 3HqP53ob8MLim0/mp04IBOIGDVXoi/bE/uWBpWxaBKiA+HMIwjxJ75Cvfll0X1fA wMIxGrDs1/6kg6zOpLHgY7pbwzXsJUQOSmz15wRn1z7sBiIFPopk2EImGbRPN9hB pQYIaZU3IZtFxTVmKwBQBpsPw5A= 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=iPdeTJCsI0JBDRseRQ87Fp ZTUT8=; b=ez3bwG8kOqrzC8RpkzJsmvMH5VRTb8RTupRjrUN4ezw1HSrOa8ZPqZ GPBHyNeN1IB+7bF58GptHgD/Lw0sTGH597tfCFQNWYDc08MMfNa9NWK7I7XTtJJK 19kyDDLVP93QRZapjW6nU3YTLV6Mj6PbQ2O4gfxpRgPLLLPsfNl0E= Received: (qmail 833 invoked by alias); 12 Mar 2014 13:46:33 -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 824 invoked by uid 89); 12 Mar 2014 13:46:32 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.1 required=5.0 tests=AWL, BAYES_00 autolearn=ham version=3.3.2 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; Wed, 12 Mar 2014 13:46:31 +0000 Received: from svr-orw-fem-01.mgc.mentorg.com ([147.34.98.93]) by relay1.mentorg.com with esmtp id 1WNjUJ-0004Eu-He from Thomas_Schwinge@mentor.com ; Wed, 12 Mar 2014 06:46:27 -0700 Received: from SVR-IES-FEM-01.mgc.mentorg.com ([137.202.0.104]) by svr-orw-fem-01.mgc.mentorg.com over TLS secured channel with Microsoft SMTPSVC(6.0.3790.4675); Wed, 12 Mar 2014 06:46:27 -0700 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.2.247.3; Wed, 12 Mar 2014 13:46:24 +0000 From: Thomas Schwinge To: CC: Subject: Re: [gomp4 2/3] OpenACC data construct implementation in terms of GF_OMP_TARGET_KIND_OACC_DATA. In-Reply-To: <1393014736-19719-2-git-send-email-thomas@codesourcery.com> References: <877g8os0vx.fsf@kepler.schwinge.homeip.net> <1393014736-19719-1-git-send-email-thomas@codesourcery.com> <1393014736-19719-2-git-send-email-thomas@codesourcery.com> User-Agent: Notmuch/0.9-101-g81dad07 (http://notmuchmail.org) Emacs/23.4.1 (i486-pc-linux-gnu) Date: Wed, 12 Mar 2014 14:46:22 +0100 Message-ID: <878usffs29.fsf@kepler.schwinge.homeip.net> MIME-Version: 1.0 Hi! On Fri, 21 Feb 2014 21:32:14 +0100, I wrote: > --- gcc/omp-low.c > +++ gcc/omp-low.c > @@ -1499,6 +1499,30 @@ scan_sharing_clauses (tree clauses, omp_context *ctx) > { > tree c, decl; > bool scan_array_reductions = false; > + bool offloaded; > + switch (gimple_code (ctx->stmt)) > + { > + case GIMPLE_OACC_PARALLEL: > + offloaded = true; > + break; > + case GIMPLE_OMP_TARGET: > + switch (gimple_omp_target_kind (ctx->stmt)) > + { > + case GF_OMP_TARGET_KIND_REGION: > + offloaded = true; > + break; > + case GF_OMP_TARGET_KIND_DATA: > + case GF_OMP_TARGET_KIND_UPDATE: > + case GF_OMP_TARGET_KIND_OACC_DATA: > + offloaded = false; > + break; > + default: > + gcc_unreachable (); > + } > + break; > + default: > + offloaded = false; > + } I now have a need for this information elsewhere; in gomp-4_0-branch r208513 changed as follows: commit 326592ef8fe7501f9ba7e67157d68c6c541e5601 Author: tschwinge Date: Wed Mar 12 13:40:07 2014 +0000 is_gimple_omp_offloaded. gcc/ * omp-low.c (scan_sharing_clauses): Move offloaded logic into... * gimple.h (is_gimple_omp_offloaded): ... this new static inline function. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gomp-4_0-branch@208513 138bc75d-0d04-0410-961f-82ee72b054a4 Grüße, Thomas diff --git gcc/ChangeLog.gomp gcc/ChangeLog.gomp index 79030d6..4ee843f 100644 --- gcc/ChangeLog.gomp +++ gcc/ChangeLog.gomp @@ -1,3 +1,9 @@ +2014-03-12 Thomas Schwinge + + * omp-low.c (scan_sharing_clauses): Move offloaded logic into... + * gimple.h (is_gimple_omp_offloaded): ... this new static inline + function. + 2014-02-28 Thomas Schwinge * gimple.def (GIMPLE_OACC_KERNELS): New code. diff --git gcc/gimple.h gcc/gimple.h index 514af32..910072d 100644 --- gcc/gimple.h +++ gcc/gimple.h @@ -5823,6 +5823,31 @@ is_gimple_omp_oacc_specifically (const_gimple stmt) } +/* Return true if OMP_* STMT is offloaded. */ + +static inline bool +is_gimple_omp_offloaded (const_gimple stmt) +{ + gcc_assert (is_gimple_omp (stmt)); + switch (gimple_code (stmt)) + { + case GIMPLE_OACC_KERNELS: + case GIMPLE_OACC_PARALLEL: + return true; + case GIMPLE_OMP_TARGET: + switch (gimple_omp_target_kind (stmt)) + { + case GF_OMP_TARGET_KIND_REGION: + return true; + default: + return false; + } + default: + return false; + } +} + + /* Returns TRUE if statement G is a GIMPLE_NOP. */ static inline bool diff --git gcc/omp-low.c gcc/omp-low.c index 2f13fb4..6b676e5 100644 --- gcc/omp-low.c +++ gcc/omp-low.c @@ -1499,31 +1499,6 @@ scan_sharing_clauses (tree clauses, omp_context *ctx) { tree c, decl; bool scan_array_reductions = false; - bool offloaded; - switch (gimple_code (ctx->stmt)) - { - case GIMPLE_OACC_KERNELS: - case GIMPLE_OACC_PARALLEL: - offloaded = true; - break; - case GIMPLE_OMP_TARGET: - switch (gimple_omp_target_kind (ctx->stmt)) - { - case GF_OMP_TARGET_KIND_REGION: - offloaded = true; - break; - case GF_OMP_TARGET_KIND_DATA: - case GF_OMP_TARGET_KIND_UPDATE: - case GF_OMP_TARGET_KIND_OACC_DATA: - offloaded = false; - break; - default: - gcc_unreachable (); - } - break; - default: - offloaded = false; - } for (c = clauses; c; c = OMP_CLAUSE_CHAIN (c)) { @@ -1696,7 +1671,8 @@ scan_sharing_clauses (tree clauses, omp_context *ctx) /* Ignore OMP_CLAUSE_MAP_POINTER kind for arrays in target regions that are not offloaded; there is nothing to map for those. */ - if (!offloaded && !POINTER_TYPE_P (TREE_TYPE (decl))) + if (!is_gimple_omp_offloaded (ctx->stmt) + && !POINTER_TYPE_P (TREE_TYPE (decl))) break; } if (DECL_P (decl)) @@ -1721,7 +1697,7 @@ scan_sharing_clauses (tree clauses, omp_context *ctx) install_var_field (decl, true, 7, ctx); else install_var_field (decl, true, 3, ctx); - if (offloaded) + if (is_gimple_omp_offloaded (ctx->stmt)) install_var_local (decl, ctx); } } @@ -1845,7 +1821,7 @@ scan_sharing_clauses (tree clauses, omp_context *ctx) gcc_assert (gimple_code (ctx->stmt) != GIMPLE_OMP_TARGET || (gimple_omp_target_kind (ctx->stmt) != GF_OMP_TARGET_KIND_UPDATE)); - if (!offloaded) + if (!is_gimple_omp_offloaded (ctx->stmt)) break; decl = OMP_CLAUSE_DECL (c); if (DECL_P (decl)