From patchwork Thu Jul 18 13:16:18 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andre Vehreschild X-Patchwork-Id: 1962102 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=gmx.de header.i=vehre@gmx.de header.a=rsa-sha256 header.s=s31663417 header.b=r3LoD0Lf; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=8.43.85.97; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4WPtd02tQnz1ySl for ; Thu, 18 Jul 2024 23:17:08 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 40F6D384B03F for ; Thu, 18 Jul 2024 13:17:06 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mout.gmx.net (mout.gmx.net [212.227.15.15]) by sourceware.org (Postfix) with ESMTPS id 89BB53861005; Thu, 18 Jul 2024 13:16:23 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 89BB53861005 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmx.de ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 89BB53861005 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=212.227.15.15 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1721308585; cv=none; b=gUKUrzcsc7a7VysKaJAyTDP3Amrt2BVHVHtsj7arwZ1Htl5IeeBsBCz1pblWMwJ5j6zBCxErpveQbDWESGuQ9VILGD60wiI+cfylwE7PKJU0RxU8AbXLtiEGBsfIy+ZN0oCaEzGnc2B+y3dcgUC7O9YGT+dDpm7xJAWi3lVz7ME= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1721308585; c=relaxed/simple; bh=MiSdcIDItjbrFnq0oaz57E6/IMcqAsnE7RStDgNjVWQ=; h=DKIM-Signature:Date:From:To:Subject:Message-ID:MIME-Version; b=XjKGftjabDw+wd5y+Yui+2c+gjW8MBGBINCg2k6Gg2lDJlUuGXqLFJ3iNt6Djxah2TKXwA+t+Y56XDCtYuTDvyhnrze8iOO452lW7ZOM4i2dV9Ut2zNMLnoTQ4axQik5heYxHidn+t6uLp1VlNnMDv7wKgeA28g75X6nwAmrje8= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1721308582; x=1721913382; i=vehre@gmx.de; bh=kltjOYZtJNsBCWS+HE0jQbffNf65flGLMRiZI6+vc4Y=; h=X-UI-Sender-Class:Date:From:To:Subject:Message-ID:MIME-Version: Content-Type:cc:content-transfer-encoding:content-type:date:from: message-id:mime-version:reply-to:subject:to; b=r3LoD0LfDVm42TKR0dkkKIdBaRcEsrR/vl0tZy3AWO7ZSwZxAvSr6xqkhZUMSeCD kVbkXLAaxf+KZJJYCrwvF2ds4abUSiJtUcM+SCOmrQbTZS5NunFWO27SxyRAyp6+8 PVhbqwIxbkUBcDhMb49Hf7dHqzjjIxD8PqSsCkj1hll2DlSZuKFiHPuesq5uDmKLi 6gApUML/j45vnz4RRdawx/v2YjxqEIpKPS3gQJqjO1svwNNdvBEmPHeb0R7dd1l1w t+ddVADhydktE41uc4dfsY0L0fKK72bUgH5QwsnnkD588S33sv0eP5cV7yZqQvA2h lmRQIQQ3lugA2YpvqQ== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from localhost ([89.1.77.198]) by mail.gmx.net (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MowGa-1rzFN20d4g-00dnq4; Thu, 18 Jul 2024 15:16:22 +0200 Date: Thu, 18 Jul 2024 15:16:18 +0200 From: Andre Vehreschild To: GCC-Patches-ML , GCC-Fortran-ML Subject: [Fortran, Patch, PR77518, (coarray), v1] Fix ICE in sizeof(coarray) Message-ID: <20240718151618.7a3e24ae@gmx.de> X-Mailer: Claws Mail 4.3.0 (GTK 3.24.41; x86_64-redhat-linux-gnu) MIME-Version: 1.0 X-Provags-ID: V03:K1:CM5S2FhkDi501sajWknrf51p865BBx5iJkPx6YEIlGbfYVrYcqL QeO6LMgyzQXnkNZHwHKGg1kas9/1PXN1uOK9PMbq6TAZFDHzUOyhk1hEPb/FXWwA9U/VabJ V31o4OSBjyjSLBIa2vU6pR9TUZbDaP+4736Uc7g7cyX+1sPxZDP7TQep/SN2/tD3yt8VIMH VHebR95dbMneb8xtil7PA== UI-OutboundReport: notjunk:1;M01:P0:j0EtZdnN99g=;VtmmVVZ5j7QUd815RjccqvqNIFG xeSKp7lS1hKq/Vk1uC8ZGEpciWtjWGLTbfnHvT/ENvOO+1lWpHyyYp/uQcS6WnWMaMgyWZEUE lc1WNABkNDG5x+kR6CNycxOfbrkhn9aRpMseOWdg7nmOYG1NJv0Kl/35eEROPjDxeeyW19qDW Xj8p6q8XKMLdR+y9wgV9PoAkxgNDhrCRFojN6iv3P/gQFhQsoQ2YbGnvf0+jfdumB0HgyTSdR lunoSO5ULR1nUzRyIpSl/EJ5BspgHmM1nv4CQnCz9ZnwWI6WdXBWO8thvDxVHKmWao8d/BZ8I riyDjDjlC8iun+P0eBYf4PCJbQ5oGIgfqIPsM9dUeHqOlaiVJ5TkmIv609cDvTgsssDiEJpZD qf53sV6DKC9imBgqaoIa+nN2zsaDJ+hsBrjb5KvL/Jlb8omIhmKRMDqnB3SWZ+5y4pxswlobI UzRHBTvDLWtdofZ5VQfUOT9LnMLY3JX3UcUncxEbfp/PPYHQWnLkBLAJgNmuQcICw7S5DHUdy AmW7wRksdBVAL41Z5IL+MpQL8QJa1pvilgtaaLp/3BQcVi2EdYS2G5+19VuEOMoSh/t5i46jJ M3S5hmpzBSfXcAqcMPhWpeHi/84YjD7fw8pILLTIGR7IPVWWCTcUMoIEXfyRKpOeHhBcmLxdO KELlVmKEio5ctFwpen1m/nP2RSONMdZQ01muE3mpPF0ckxNtpGh/nmtpgxPgZxy5LsPcar44b /F4NmhGtAjPsCq6Y7tlsdLR2xFoeUuqRiUXHMCJN61nlTZsv3OINccNrg3jL4BsWyMu4F3a3U E0SdvynBoyGG2YkhZQuzbFoQ== X-Spam-Status: No, score=-10.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org Hi all, the attached patch fixes an ICE when the object supplied to sizeof() is a coarray of class type. This is fixed by taking the class object from the se's class_container. Regtests ok on x86_64-pc-linux-gnu / Fedora 39. Ok for mainline? Regards, Andre --- Andre Vehreschild * Email: vehre ad gcc dot gnu dot org From 0699756fd047873d267c15b226f11b799edd8d94 Mon Sep 17 00:00:00 2001 From: Andre Vehreschild Date: Thu, 18 Jul 2024 14:53:31 +0200 Subject: [PATCH] Fortran: Fix ICE in sizeof(coarray) [PR77518] Use se's class_container where present in sizeof(). PR fortran/77518 gcc/fortran/ChangeLog: * trans-intrinsic.cc (gfc_conv_intrinsic_sizeof): User class_container of se when set. gcc/testsuite/ChangeLog: * gfortran.dg/coarray/sizeof_1.f90: New test. --- gcc/fortran/trans-intrinsic.cc | 7 +++-- .../gfortran.dg/coarray/sizeof_1.f90 | 27 +++++++++++++++++++ 2 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/gfortran.dg/coarray/sizeof_1.f90 diff --git a/gcc/fortran/trans-intrinsic.cc b/gcc/fortran/trans-intrinsic.cc index d58bea30101c..9e03615e7275 100644 --- a/gcc/fortran/trans-intrinsic.cc +++ b/gcc/fortran/trans-intrinsic.cc @@ -8163,8 +8163,11 @@ gfc_conv_intrinsic_sizeof (gfc_se *se, gfc_expr *expr) && arg->ref && arg->ref->type == REF_COMPONENT)) /* The scalarizer added an additional temp. To get the class' vptr one has to look at the original backend_decl. */ - byte_size = gfc_class_vtab_size_get ( - GFC_DECL_SAVED_DESCRIPTOR (arg->symtree->n.sym->backend_decl)); + if (argse.class_container) + byte_size = gfc_class_vtab_size_get (argse.class_container); + else + byte_size = gfc_class_vtab_size_get ( + GFC_DECL_SAVED_DESCRIPTOR (arg->symtree->n.sym->backend_decl)); else gcc_unreachable (); } diff --git a/gcc/testsuite/gfortran.dg/coarray/sizeof_1.f90 b/gcc/testsuite/gfortran.dg/coarray/sizeof_1.f90 new file mode 100644 index 000000000000..b26f84164068 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/coarray/sizeof_1.f90 @@ -0,0 +1,27 @@ +!{ dg-do run } + +! Check that pr77518 is fixed. +! Based on code by Gerhard Steinmetz + +program coarray_sizeof_1 + type t + end type + type t2 + integer :: v = 42 + end type + type t3 + type(t2) :: s + integer :: n = 1 + end type + + class(t), allocatable :: z[:] + class(t2), allocatable :: z2[:] + class(t3), allocatable :: z3[:] + + if (sizeof(z) /= 0) stop 1 + if (sizeof(z2) /= sizeof(integer)) stop 2 + allocate(z3[*]) + if (sizeof(z3) /= sizeof(z2) + sizeof(integer)) stop 3 + if (sizeof(z3%s) /= sizeof(z2)) stop 4 +end + -- 2.45.2