From patchwork Wed Dec 17 22:16:47 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Thomas Schwinge X-Patchwork-Id: 422387 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 DEEDE140081 for ; Thu, 18 Dec 2014 09:17:13 +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=Eh3LmAPEx5gZ36IW oXkuNKPRayJQr8QiLMtOiNbtJBstAZbO4f+AfrM2zw5iwFzYG32X0giRIm12IqHA +EtAVpiwULqXDyYDnIdNwlLeESAkxRS9OloJ+Bu+eVzV7BGukdhfFpz4pciHXOKO Mh1e3Kk+rgoWwAO2au++YBza8Do= 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=Wy3JzgeR4yt/E70uAj/ZSw dbO/s=; b=O72f910uTzR7xADEdAHKu1qJBYnvJdm7UDy4avGxc8RfLelIp9OnVR yMPg2wLNI6tehT+iSmm0cWP4mtzGAhOBTZeU5kPkn6f+30+/3suseMklAIwXJI3M qOfj9fTUqNW+MMzSrF9pVBbEBgvmV1XRXyzlOXwyYeH8F9rTapCOs= Received: (qmail 833 invoked by alias); 17 Dec 2014 22:17:06 -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 809 invoked by uid 89); 17 Dec 2014 22:17:05 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=AWL, BAYES_00, RCVD_IN_DNSWL_NONE, SPF_PASS 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; Wed, 17 Dec 2014 22:17:02 +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 1Y1Mtt-0001To-3c from Thomas_Schwinge@mentor.com ; Wed, 17 Dec 2014 14:16:57 -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; Wed, 17 Dec 2014 22:16:55 +0000 From: Thomas Schwinge To: Jakub Jelinek CC: "gcc-patches@gcc.gnu.org" , Cesar Philippidis , Subject: Re: [gomp4] acc enter/exit data In-Reply-To: <20141210095934.GY1667@tucnak.redhat.com> References: <5452D398.2030709@codesourcery.com> <871to796ey.fsf@kepler.schwinge.homeip.net> <20141210095934.GY1667@tucnak.redhat.com> User-Agent: Notmuch/0.9-101-g81dad07 (http://notmuchmail.org) Emacs/24.3.1 (x86_64-pc-linux-gnu) Date: Wed, 17 Dec 2014 23:16:47 +0100 Message-ID: <87tx0tudkg.fsf@schwinge.name> MIME-Version: 1.0 Hi! On Wed, 10 Dec 2014 10:59:34 +0100, Jakub Jelinek wrote: > On Wed, Dec 10, 2014 at 10:54:13AM +0100, Thomas Schwinge wrote: > > --- gcc/omp-low.c > > +++ gcc/omp-low.c > > @@ -9404,7 +9404,9 @@ build_omp_regions_1 (basic_block bb, struct omp_region *parent, > > else if (code == GIMPLE_OMP_TARGET > > && (gimple_omp_target_kind (stmt) == GF_OMP_TARGET_KIND_UPDATE > > || (gimple_omp_target_kind (stmt) > > - == GF_OMP_TARGET_KIND_OACC_UPDATE))) > > + == GF_OMP_TARGET_KIND_OACC_UPDATE) > > + || (gimple_omp_target_kind (stmt) > > + == GF_OMP_TARGET_KIND_OACC_ENTER_EXIT_DATA))) > > new_omp_region (bb, code, parent); > > else > > { > > @@ -12270,7 +12272,9 @@ make_gimple_omp_edges (basic_block bb, struct omp_region **region, > > cur_region = new_omp_region (bb, code, cur_region); > > fallthru = true; > > if (gimple_omp_target_kind (last) == GF_OMP_TARGET_KIND_UPDATE > > - || gimple_omp_target_kind (last) == GF_OMP_TARGET_KIND_OACC_UPDATE) > > + || gimple_omp_target_kind (last) == GF_OMP_TARGET_KIND_OACC_UPDATE > > + || (gimple_omp_target_kind (last) > > + == GF_OMP_TARGET_KIND_OACC_ENTER_EXIT_DATA)) > > I'd say that at this point a > switch (gimple_omp_target_kind (last)) > { > case GF_OMP_TARGET_KIND_UPDATE: > case GF_OMP_TARGET_KIND_OACC_UPDATE: > case GF_OMP_TARGET_KIND_OACC_ENTER_EXIT_DATA: > ... > default: > ... > } > would be cleaner. The first hunk is more questionable, because there is > else and it would require duplicating of the else body in default:, goto > or similar, but perhaps it would be better that way too. Thanks for the suggestion. I found a way to express the first one differently; committed to gomp-4_0-branch in r218837: commit c9c55fd5c318f0ed6b866930d445a3df4aa058e8 Author: tschwinge Date: Wed Dec 17 22:14:58 2014 +0000 Simplify multi-line if conditions. gcc/ * omp-low.c (build_omp_regions_1, make_gimple_omp_edges): Simplify multi-line if conditions. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gomp-4_0-branch@218837 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog.gomp | 5 +++++ gcc/omp-low.c | 57 ++++++++++++++++++++++++++++++++++++++---------------- 2 files changed, 45 insertions(+), 17 deletions(-) Grüße, Thomas diff --git gcc/ChangeLog.gomp gcc/ChangeLog.gomp index 970e744..f925902 100644 --- gcc/ChangeLog.gomp +++ gcc/ChangeLog.gomp @@ -1,3 +1,8 @@ +2014-12-17 Thomas Schwinge + + * omp-low.c (build_omp_regions_1, make_gimple_omp_edges): Simplify + multi-line if conditions. + 2014-12-10 Thomas Schwinge * omp-low.c (scan_omp_target): Remove taskreg_nesting_level and diff --git gcc/omp-low.c gcc/omp-low.c index a1fbccf..fd117dc 100644 --- gcc/omp-low.c +++ gcc/omp-low.c @@ -9379,7 +9379,6 @@ build_omp_regions_1 (basic_block bb, struct omp_region *parent, region->exit = bb; parent = parent->outer; } - else if (code == GIMPLE_OMP_CONTINUE) { gcc_assert (parent); @@ -9389,21 +9388,34 @@ build_omp_regions_1 (basic_block bb, struct omp_region *parent, { /* GIMPLE_OMP_SECTIONS_SWITCH is part of GIMPLE_OMP_SECTIONS, and we do nothing for it. */ - ; } - else if (code == GIMPLE_OMP_TARGET - && (gimple_omp_target_kind (stmt) == GF_OMP_TARGET_KIND_UPDATE - || (gimple_omp_target_kind (stmt) - == GF_OMP_TARGET_KIND_OACC_UPDATE) - || (gimple_omp_target_kind (stmt) - == GF_OMP_TARGET_KIND_OACC_ENTER_EXIT_DATA))) - new_omp_region (bb, code, parent); else { - /* Otherwise, this directive becomes the parent for a new - region. */ region = new_omp_region (bb, code, parent); - parent = region; + /* Otherwise... */ + if (code == GIMPLE_OMP_TARGET) + { + switch (gimple_omp_target_kind (stmt)) + { + case GF_OMP_TARGET_KIND_REGION: + case GF_OMP_TARGET_KIND_DATA: + case GF_OMP_TARGET_KIND_OACC_PARALLEL: + case GF_OMP_TARGET_KIND_OACC_KERNELS: + case GF_OMP_TARGET_KIND_OACC_DATA: + break; + case GF_OMP_TARGET_KIND_UPDATE: + case GF_OMP_TARGET_KIND_OACC_UPDATE: + case GF_OMP_TARGET_KIND_OACC_ENTER_EXIT_DATA: + /* ..., other than for those stand-alone directives... */ + region = NULL; + break; + default: + gcc_unreachable (); + } + } + /* ..., this directive becomes the parent for a new region. */ + if (region) + parent = region; } } @@ -12259,11 +12271,22 @@ make_gimple_omp_edges (basic_block bb, struct omp_region **region, case GIMPLE_OMP_TARGET: cur_region = new_omp_region (bb, code, cur_region); fallthru = true; - if (gimple_omp_target_kind (last) == GF_OMP_TARGET_KIND_UPDATE - || gimple_omp_target_kind (last) == GF_OMP_TARGET_KIND_OACC_UPDATE - || (gimple_omp_target_kind (last) - == GF_OMP_TARGET_KIND_OACC_ENTER_EXIT_DATA)) - cur_region = cur_region->outer; + switch (gimple_omp_target_kind (last)) + { + case GF_OMP_TARGET_KIND_REGION: + case GF_OMP_TARGET_KIND_DATA: + case GF_OMP_TARGET_KIND_OACC_PARALLEL: + case GF_OMP_TARGET_KIND_OACC_KERNELS: + case GF_OMP_TARGET_KIND_OACC_DATA: + break; + case GF_OMP_TARGET_KIND_UPDATE: + case GF_OMP_TARGET_KIND_OACC_UPDATE: + case GF_OMP_TARGET_KIND_OACC_ENTER_EXIT_DATA: + cur_region = cur_region->outer; + break; + default: + gcc_unreachable (); + } break; case GIMPLE_OMP_SECTIONS: