From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa4.mentor.iphmx.com (esa4.mentor.iphmx.com [68.232.137.252]) by sourceware.org (Postfix) with ESMTPS id 61B3A3858C2C; Tue, 30 Nov 2021 12:11:02 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 61B3A3858C2C Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=mentor.com IronPort-SDR: HexHOa/s6lDPYfm7gB65fN+i/l6u1DL2/BNUszkPCpNrXWmtGQI5fiRf6eUGzMk+3ATqL3nWRa meqmFRL1wwf6st54GrclG8cUeHHg3GFlnIX8EgljQNU7v+tB/D1JeP5SLLCEomc2va79sjIxAP JLA3Vs+i7T70pDT9R15Y/QP+sPdegIW/lVwgmgEvCa8qe2dLZJr9Xs4KZcb88JaFN8Od5lXj8X TLTuJ0ZlFofUd5X40TTAYG6MYw1KpbfkkuRnzCN4y+d2L/EujLm/6fCHAZRUe63wY1J/up2gZt 3fT1SngpP6Bs9uMcxTndRjPA X-IronPort-AV: E=Sophos;i="5.87,275,1631606400"; d="scan'208,223";a="69078411" Received: from orw-gwy-01-in.mentorg.com ([192.94.38.165]) by esa4.mentor.iphmx.com with ESMTP; 30 Nov 2021 04:11:01 -0800 IronPort-SDR: q1LEt/r5Z9CFhy2Enhc5l/DTZ5DTkfRMtuxT8ZdEucHWfujPCFjZVmzwvwfvgo5gQBYAthEmtb x4mFBOOjAG75D08I3/e7OSx7faoKXWBBOdp1wM6BzMA1Y0aczZ1WfYUa8i+vlMLm6n5WpXPYoL 8WCz//0fSNLrJA0lsYGayhhcaSDYgQKeAHBoONuKNTY9TcJCS3Btzwk90eu7/L+Y4JmpwrooGs sk9vqUqYSxqc3jNmAyU77M8RX4t/3CALyVP3Uqx0oYJza0/luuvwsJzkIhrH6hSQmbg2oeNVQ6 8HE= From: Thomas Schwinge To: , CC: Kwok Cheung Yeung Subject: Re: [gomp4] Make OpenACC orphan gang reductions errors In-Reply-To: <91521931-373f-a3a6-7a3f-1752f08858a1@codesourcery.com> References: <91521931-373f-a3a6-7a3f-1752f08858a1@codesourcery.com> User-Agent: Notmuch/0.29.3+94~g74c3f1b (https://notmuchmail.org) Emacs/27.1 (x86_64-pc-linux-gnu) Date: Tue, 30 Nov 2021 13:10:53 +0100 Message-ID: <87k0gpx2r6.fsf@euler.schwinge.homeip.net> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: SVR-IES-MBX-04.mgc.mentorg.com (139.181.222.4) To svr-ies-mbx-01.mgc.mentorg.com (139.181.222.1) X-Spam-Status: No, score=-12.1 required=5.0 tests=BAYES_00, GIT_PATCH_0, HEADER_FROM_DIFFERENT_DOMAINS, KAM_DMARC_STATUS, SPF_HELO_PASS, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: fortran@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Fortran mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 30 Nov 2021 12:11:04 -0000 --=-=-= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Hi! On 2017-05-01T18:27:59-0700, Cesar Philippidis wro= te: > --- a/gcc/fortran/openmp.c > +++ b/gcc/fortran/openmp.c > @@ -6090,6 +6090,18 @@ resolve_oacc_loop_blocks (gfc_code *code) > + if (code->op =3D=3D EXEC_OACC_LOOP > + && code->ext.omp_clauses->lists[OMP_LIST_REDUCTION] > + && code->ext.omp_clauses->gang) > + { > + for (c =3D omp_current_ctx; c; c =3D c->previous) > + if (!oacc_is_loop (c->code)) > + break; > + if (c =3D=3D NULL || !(oacc_is_parallel (c->code) > + || oacc_is_kernels (c->code))) > + gfc_error ("gang reduction on an orphan loop at %L", &code->loc); > + } To avoid erroneous diagnostics, we also need to handle the OpenACC 'serial' construct here. I've adapted Kwok's relevant patch, and pushed to master branch commit f1a58ab0db20c0862e8b5039bd448fc8c9799cac "[OpenACC] Allow gang reductions inside serial constructs", see attached. Gr=C3=BC=C3=9Fe Thomas ----------------- Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstra=C3=9Fe 201= , 80634 M=C3=BCnchen; Gesellschaft mit beschr=C3=A4nkter Haftung; Gesch=C3= =A4ftsf=C3=BChrer: Thomas Heurung, Frank Th=C3=BCrauf; Sitz der Gesellschaf= t: M=C3=BCnchen; Registergericht M=C3=BCnchen, HRB 106955 --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename="0001-OpenACC-Allow-gang-reductions-inside-serial-construc.patch" >From f1a58ab0db20c0862e8b5039bd448fc8c9799cac Mon Sep 17 00:00:00 2001 From: Kwok Cheung Yeung Date: Fri, 13 Mar 2020 11:13:49 -0700 Subject: [PATCH] [OpenACC] Allow gang reductions inside serial constructs ... fixing a regression introduced in the preceding commit 2b7dac2c0dcb087da9e4018943c023c0678234a3 "Make OpenACC orphan gang reductions errors". gcc/fortran/ * openmp.c (oacc_is_serial, oacc_is_parallel_or_serial): New. (resolve_oacc_loop_blocks): Use oacc_is_parallel_or_serial instead of oacc_is_parallel. libgomp/ * testsuite/libgomp.oacc-fortran/parallel-dims.f90: Remove temporary skip. Co-Authored-By: Thomas Schwinge --- gcc/fortran/openmp.c | 14 +++++++++++++- .../libgomp.oacc-fortran/parallel-dims.f90 | 1 - 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/gcc/fortran/openmp.c b/gcc/fortran/openmp.c index 4fa38691c01..b4100577e51 100644 --- a/gcc/fortran/openmp.c +++ b/gcc/fortran/openmp.c @@ -8334,6 +8334,18 @@ oacc_is_kernels (gfc_code *code) return code->op == EXEC_OACC_KERNELS || code->op == EXEC_OACC_KERNELS_LOOP; } +static bool +oacc_is_serial (gfc_code *code) +{ + return code->op == EXEC_OACC_SERIAL || code->op == EXEC_OACC_SERIAL_LOOP; +} + +static bool +oacc_is_parallel_or_serial (gfc_code *code) +{ + return oacc_is_parallel (code) || oacc_is_serial (code); +} + static gfc_statement omp_code_to_statement (gfc_code *code) { @@ -8644,7 +8656,7 @@ resolve_oacc_loop_blocks (gfc_code *code) for (c = omp_current_ctx; c; c = c->previous) if (!oacc_is_loop (c->code)) break; - if (c == NULL || !(oacc_is_parallel (c->code) + if (c == NULL || !(oacc_is_parallel_or_serial (c->code) || oacc_is_kernels (c->code))) gfc_error ("gang reduction on an orphan loop at %L", &code->loc); } diff --git a/libgomp/testsuite/libgomp.oacc-fortran/parallel-dims.f90 b/libgomp/testsuite/libgomp.oacc-fortran/parallel-dims.f90 index 80d64030414..fad3d9d6a80 100644 --- a/libgomp/testsuite/libgomp.oacc-fortran/parallel-dims.f90 +++ b/libgomp/testsuite/libgomp.oacc-fortran/parallel-dims.f90 @@ -3,7 +3,6 @@ ! { dg-additional-sources parallel-dims-aux.c } ! { dg-do run } - ! { dg-skip-if TODO { *-*-* } } ! { dg-prune-output "command-line option '-fintrinsic-modules-path=.*' is valid for Fortran but not for C" } ! { dg-additional-options "-fopt-info-note-omp" } -- 2.33.0 --=-=-=--