From patchwork Sat Dec 10 21:23:26 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Harald Anlauf X-Patchwork-Id: 61758 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id EC25D3840911 for ; Sat, 10 Dec 2022 21:23:58 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org EC25D3840911 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1670707439; bh=J3hMBH1ulzJc+6q2TCIyR+LATVepjqdoRlzRRdqRzq8=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=jTtayCMvJvh2IVC2e/jPR/sHbBVBKxK0BR8aOP1s7I/PeBIn43bxsAeNxWBc6dGqs VMdjZqGE8uyBS7NYwbDT5DfRcNc9DtfHHaqVBDShQrg/MTRzD3p9Sc+jMqLgyVJPCT v99ocUrX/O3h4lpCekpYabigpNwlVPuaGfboyuME= 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.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 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: To: fortran , gcc-patches Subject: [PATCH] Fortran: fix ICE on bad use of statement function [PR107995] 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 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: , X-Patchwork-Original-From: Harald Anlauf via Gcc-patches From: Harald Anlauf Reply-To: Harald Anlauf Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org Sender: "Gcc-patches" 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 From 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 [PR107995] 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. --- 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 --- a/gcc/fortran/interface.cc +++ b/gcc/fortran/interface.cc @@ -1334,6 +1334,12 @@ gfc_check_dummy_characteristics (gfc_symbol *s1, gfc_symbol *s2, if (s1 == NULL || s2 == NULL) return s1 == s2 ? true : false; + if (s1->attr.proc == PROC_ST_FUNCTION || s2->attr.proc == 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/gfortran.dg/pr107995.f90 new file mode 100644 index 00000000000..22e878630b8 --- /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) = 1 ! { dg-warning "Statement function" } + print *, n(n) ! { dg-error "Statement function" } +end -- 2.35.3