From patchwork Wed May 19 22:49:48 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Julian Brown X-Patchwork-Id: 1481315 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=sourceware.org; envelope-from=gcc-patches-bounces@gcc.gnu.org; receiver=) Received: from sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4Flp3m5tzBz9sW1 for ; Thu, 20 May 2021 08:50:11 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 53874394FC18; Wed, 19 May 2021 22:50:08 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from esa2.mentor.iphmx.com (esa2.mentor.iphmx.com [68.232.141.98]) by sourceware.org (Postfix) with ESMTPS id 01267394FC18; Wed, 19 May 2021 22:50:03 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 01267394FC18 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=Julian_Brown@mentor.com IronPort-SDR: X9UmO2OETRjgHySthOQCe1WOEbwfqJIGCu3qvGKJZvANSy3OdYm7KqIOYNsSfkjmAb39pzGiqR GE7qYxDL5D2XU9S2xARKi+GMNG9FVy/5EDzFfNLDz3SP+rLZExdY+ixUxDcWTnpfszw30rEJmQ n7af6ymIzEulEJgcZQs0nRJoAuYRCJcpFyvZPsq6kjYlyb1+ESVOTSX8ZrPeKrZqTBk0A+otqE ZwuK2wETJtPqOvmdENdhI12IbrmDbmidzeTkd35/uhrm714r7YBpg17daipM1UW3alCfkcL1KV 8uA= X-IronPort-AV: E=Sophos;i="5.82,313,1613462400"; d="scan'208";a="61407417" Received: from orw-gwy-01-in.mentorg.com ([192.94.38.165]) by esa2.mentor.iphmx.com with ESMTP; 19 May 2021 14:50:02 -0800 IronPort-SDR: LbjRlOmPV8RPniF0PXOfKwQc5tDmO9l0ZDLmNjMXryaX5tp+z+87B2leNUI6EWv3zw/KuQVorj esHjDI+6ayXW6jAaKLnLE9Tyhm7KWNo3lo2DhJ6VXtcaqBx4XaOkg2WvkIpiIybyf/vSxs+Q+e wV6nMr95yqcINhJJc5oNkjuw6AHA+pERw/SX1IdrEFrLD/BMeHdCTZYCC82OBuEBewqWClFdMo M+2qbs+sFyHBf0IwE5i08j1KV4KTQCTsTiTDeyHCckzAK7QAzaoJdZ4Qd4/tcUezHCXgTGV10q XW4= From: Julian Brown To: Subject: [PATCH v2 0/4] [og10] OpenACC: Rework struct component handling Date: Wed, 19 May 2021 15:49:48 -0700 Message-ID: X-Mailer: git-send-email 2.29.2 MIME-Version: 1.0 X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: SVR-IES-MBX-03.mgc.mentorg.com (139.181.222.3) To SVR-IES-MBX-04.mgc.mentorg.com (139.181.222.4) X-Spam-Status: No, score=-5.9 required=5.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS, KAM_DMARC_STATUS, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS, SPF_PASS, TXREP autolearn=no autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jakub Jelinek , Tobias Burnus , fortran@gcc.gnu.org, Thomas Schwinge Errors-To: gcc-patches-bounces@gcc.gnu.org Sender: "Gcc-patches" This is a new series of patches for the og10 branch to rework how indirect struct components are handled for offloaded OpenACC code regions. Compared to the version posted previously here: https://gcc.gnu.org/pipermail/gcc-patches/2021-May/570058.html ...the patches have been rebased to the current og10 tip, and adjusted so that the rework largely only affects OpenACC rather than both OpenACC and OpenMP. Recent changes on the og10 branch (and apparent divergence between the OpenACC and OpenMP APIs themselves) make it harder to unify code paths for the two APIs, though further work could probably remove some of the duplication that remains after these patches are committed. Tested with offloading to nvptx. I will apply to the og10 branch shortly. Julian Julian Brown (4): [og10] Rewrite GOMP_MAP_ATTACH_DETACH mappings unconditionally [og10] Unify ARRAY_REF/INDIRECT_REF stripping code in extract_base_bit_offset [og10] Refactor struct lowering for OpenACC/OpenMP in gimplify.c [og10] Rework indirect struct handling for OpenACC in gimplify.c gcc/fortran/trans-openmp.c | 20 +- gcc/gimplify.c | 1151 +++++++++++------ gcc/omp-low.c | 16 +- gcc/testsuite/g++.dg/goacc/member-array-acc.C | 13 + gcc/testsuite/g++.dg/gomp/member-array-omp.C | 13 + .../testsuite/libgomp.oacc-c++/deep-copy-17.C | 101 ++ .../libgomp.oacc-c-c++-common/deep-copy-15.c | 68 + .../libgomp.oacc-c-c++-common/deep-copy-16.c | 231 ++++ 8 files changed, 1202 insertions(+), 411 deletions(-) create mode 100644 gcc/testsuite/g++.dg/goacc/member-array-acc.C create mode 100644 gcc/testsuite/g++.dg/gomp/member-array-omp.C create mode 100644 libgomp/testsuite/libgomp.oacc-c++/deep-copy-17.C create mode 100644 libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-15.c create mode 100644 libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-16.c