From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mout.gmx.net (mout.gmx.net [212.227.17.21]) by sourceware.org (Postfix) with ESMTPS id E6D5E38537B0; Sat, 10 Dec 2022 21:23:29 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org E6D5E38537B0 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmx.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmx.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.de; s=s31663417; t=1670707406; bh=y8snOMbicaz87v0l4d21iAIMzXb5Zw2S2P5zXMs78LE=; h=X-UI-Sender-Class:From:To:Subject:Date; b=P5FoHRx4TAG9tIwrYMRW0h4+Cu5UaHnXHaUWM7HBLcIs7SGLjyLOth9rgVip4KX8B 1bVLLzKs6jJ1EtefwT3WFPWpxLhhDi6YuBLYcmLrLaYYLj3xBLAvtXKT7jzFiHjP8c XqGIuuS+CDFMd/Kp2HXBh1KoP52oJc0FZG6yhVyYu/abXf9kXhG02kXDb/D/b/FQjQ lWkcz5ejo7MjeL92aaeT5vFCdte0ajKAbvRCLrP8I6uburdZTSf13O5BFAINY6NgHp XXIRFNf4wvtYv9wvAd8p775zygeLDMHWWYhK/xd1POE2YsCnTZXqhlmPQrkxvWmVt/ YdN5FOTKu7oxQ== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from [93.207.84.200] ([93.207.84.200]) by web-mail.gmx.net (3c-app-gmx-bap38.server.lan [172.19.172.108]) (via HTTP); Sat, 10 Dec 2022 22:23:26 +0100 MIME-Version: 1.0 Message-ID: From: Harald Anlauf To: fortran , gcc-patches Subject: [PATCH] Fortran: fix ICE on bad use of statement function [PR107995] Content-Type: multipart/mixed; boundary=rekceb-f52b8b4f-7140-488a-9ec1-2957a93af377 Date: Sat, 10 Dec 2022 22:23:26 +0100 Importance: normal Sensitivity: Normal X-Priority: 3 X-Provags-ID: V03:K1:yFbU0u7DCZ+lTMf5K1PF9ifWUIAqxO24UXqHZz2PXLgIIxysNnCzCpU9LeIxE0X94YP3T r9xROV0LpMAwKyV7uzoxu4p5zBY89VWkW2rj9Uxmb9BooF1TYNmMUR123mTKtY6h0i2g5Ur2Vf9S zYzqhR6k4kjnCGlHk8HVuVKdHHV4wtrveRihP2AUAHzdxMR0Qr6hAaNlR+8NUkuIAJIOOmgJf/8g yUdFpSjpgJMiwBddKZlyaBUeAimGGnEIFwTYc768jYSoe9jL1TMCmNxzQopEDzuHIjyMRD6YRP8M BY= UI-OutboundReport: notjunk:1;M01:P0:Fo2fhongbhc=;GesFKAULEnZib3tzWHmtGIAEZ+v xNDXdhl3rZDQkd1nG7xO/o/Tbwc74WoMbvlUQnc5CziJw1HhZLJn4R+8sEmdtlS6pyGY1hakd j2EOqJUgnr4ZeLdMaaERtWWxvwPK97FOyFOrEA7UDM3NGN4HvgqOB1HR6CXd/4xzL5MoPLfcu eaPTlwooikjB64VvHTc1PUwgIqXxcNUitxPM8cOjpiF1at7piIDFvT0ChB3cc//RmsoPpcyuH klPvdmZ3mAi7uHO6ig6JKW34km0QMLZ9n45zxJpFMeVWK8Q2yYWRyNT4ENVwgkcHt83MwrqH4 Sw8srQJzYJ2U53Xhls1yoQYX4R6uZnyrdNx7hvbpDar2CFurnGCwvO1B/DQ58EnnFT3WLGQw0 Mx2l5+RoAQatTpqIpzUXEaaFvWORyFyKMMBxh0yeUsGW7q3I1Uag3vNY1mOu1VaTTRwsErBpL LV/yzAk9DcB99Vy5HwBHUN9GjtyCwzW/1G9u8cECUAAjbdGse8b2jZwlYsokgQ2XPmqUq/30Q jzV99xxLCcEZfwOTdGbs02xMoNqPe6ZeK4qpdGaKhH+9lhmpd+4ha4BMhUat+baU+gXNuaGJy mI7qObXhecLmkSc7L/EyaO/3mzjMYU/42UFK3thb2uVuGPS589Hcex9QqUFAUxUaDoQLcJCu2 JVr4NtVQycsZ1WueQ3XztR39a01xKfmjKzyol9z8vdeCXm6RNYbEaAFIkg1PCKfETi1vYGXEh hyGV5UrcHJt8cbBOxaD0Kb70nM6kAzCLi8XK9Ah9Y4HCTrx4hLD65DSEHhu5u3KlEYs5sHN4d 2eJ6Z+7GM1TXt3w4VlnZhNMg== X-Spam-Status: No, score=-13.5 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_H2,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 List-Id: --rekceb-f52b8b4f-7140-488a-9ec1-2957a93af377 Content-Type: text/plain; charset=UTF-8 Dear all, I'm submitting the attached patch on behalf of Steve. It fixes an ICE that occurs on an obscure use of a statement function as argument to that function. Regtested on x86_64-pc-linux-gnu. OK for mainline? Thanks, Harald --rekceb-f52b8b4f-7140-488a-9ec1-2957a93af377 Content-Type: text/x-patch Content-Disposition: attachment; filename=pr107995.diff Content-Transfer-Encoding: quoted-printable =46rom f717054e7d656588650f6d4fd5a03840c6dc9a9c Mon Sep 17 00:00:00 2001 From: Steve Kargl Date: Sat, 10 Dec 2022 22:17:15 +0100 Subject: [PATCH] Fortran: fix ICE on bad use of statement function [PR1079= 95] gcc/fortran/ChangeLog: PR fortran/107995 * interface.cc (gfc_check_dummy_characteristics): Reject statement function dummy arguments. gcc/testsuite/ChangeLog: PR fortran/107995 * gfortran.dg/pr107995.f90: New test. =2D-- gcc/fortran/interface.cc | 6 ++++++ gcc/testsuite/gfortran.dg/pr107995.f90 | 10 ++++++++++ 2 files changed, 16 insertions(+) create mode 100644 gcc/testsuite/gfortran.dg/pr107995.f90 diff --git a/gcc/fortran/interface.cc b/gcc/fortran/interface.cc index 73799c175b7..7d8eeda5a99 100644 =2D-- a/gcc/fortran/interface.cc +++ b/gcc/fortran/interface.cc @@ -1334,6 +1334,12 @@ gfc_check_dummy_characteristics (gfc_symbol *s1, gf= c_symbol *s2, if (s1 =3D=3D NULL || s2 =3D=3D NULL) return s1 =3D=3D s2 ? true : false; + if (s1->attr.proc =3D=3D PROC_ST_FUNCTION || s2->attr.proc =3D=3D PROC_= ST_FUNCTION) + { + strncpy (errmsg, "Statement function", err_len); + return false; + } + /* Check type and rank. */ if (type_must_agree) { diff --git a/gcc/testsuite/gfortran.dg/pr107995.f90 b/gcc/testsuite/gfortr= an.dg/pr107995.f90 new file mode 100644 index 00000000000..22e878630b8 =2D-- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr107995.f90 @@ -0,0 +1,10 @@ +! { dg-do compile } +! PR fortran/107995 +! Contributed by G.Steinmetz + +program p + implicit none + integer :: n ! { dg-error "Self-referential argument" } + n(n) =3D 1 ! { dg-warning "Statement function" } + print *, n(n) ! { dg-error "Statement function" } +end =2D- 2.35.3 --rekceb-f52b8b4f-7140-488a-9ec1-2957a93af377--