From patchwork Thu Feb 10 20:28:40 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Harald Anlauf X-Patchwork-Id: 1591338 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.a=rsa-sha256 header.s=default header.b=Unlfrc/9; dkim-atps=neutral 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+incoming=patchwork.ozlabs.org@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 bilbo.ozlabs.org (Postfix) with ESMTPS id 4JvpJR3SBvz9sFq for ; Fri, 11 Feb 2022 07:29:41 +1100 (AEDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id A56503858417 for ; Thu, 10 Feb 2022 20:29:39 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org A56503858417 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1644524979; bh=v57L/CXvj0kBJNg4mI+P5c+nG9oaRN/O0rbQoH24CIw=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=Unlfrc/96oR2bcmgiE37kCDhzpEn3ps934gPm9iZ/u9t5R7YcGUC8Lyi77JunHm83 /1lRrojh1/lvdwq2x60ep0Rr3JuQss0tTo2iAVvZ1iRefUlKKeujbrfQmw3jTwF2kv wuA/D4F3JSDqcakYBT2gCESrLNgmkKBu7wFM5hYU= 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.19]) by sourceware.org (Postfix) with ESMTPS id E68473858D1E; Thu, 10 Feb 2022 20:28:41 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org E68473858D1E X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from [79.251.7.21] ([79.251.7.21]) by web-mail.gmx.net (3c-app-gmx-bs60.server.lan [172.19.170.144]) (via HTTP); Thu, 10 Feb 2022 21:28:40 +0100 MIME-Version: 1.0 Message-ID: To: fortran , gcc-patches Subject: [PATCH] PR fortran/104211 - ICE in find_array_section, at fortran/expr.cc:1720 Date: Thu, 10 Feb 2022 21:28:40 +0100 Importance: normal Sensitivity: Normal X-Priority: 3 X-Provags-ID: V03:K1:YTQSz2mxl0BFF5dcmAJTAtcDDhOpQzFBSIdlJr4X4jeAKW0LC5hHAvGGL5pKat7UBoOZt 2OwvzlrOqbz0ZN5scznR1TUEBRkfAgYqbZ5bQvOdYaKqjhymJAoQ39e2OZIZolVMfHQZ2eF1WsZy HGhm9nyAZJKRiLQWsYJZVoY7ykekgr2HrUdBm8VPou7dSOvTjGEL7NtPns15gjyT+7TdAHTv/4+W 92X/zmS89lJdU2oj/oumQCziMCANsSTWCqX082MqSsCd30HXz5ToIcTbck3LZXvOn5jmY6C/tCP8 /Y= X-UI-Out-Filterresults: notjunk:1;V03:K0:qYjFWKjq+8E=:FTYLkFEIZlXctLvBpiwLG1 nkjIVbB8O2orICp9DEWtYafDqTq99drZ0u1eJ8GUWy2V0JqOXdYYnEvJrH8XOr+1Mxg9wkLaY MG8diLRTeusPyk2dX3X5/Xts39PSiSa5ezHpZO9eTFTziN4aGbNGF6HOTcG7JHs06SgPnvv8H oltukpK/VmM+mBkc+gm4H0nHPzf2DsYsnleQcsKtEjm9us7pVAUnExArITAiZYEC8cDpWZJNY 233lWwCT/Tw/jUlsF/h2f9Y//MtmPCrN4uUwUk6iGBnnWLGsLDpBT/nXhIVjmNzNjs+TgAgAE 89daUdJROc8z1fzSywTPZQaG58zogMfUusqo8+3OlKB3wj54sguHfXScyIV4Vn3K+Lr8J1rNV ecRLMT0noGORceKSpLkESRqKqnvYSyB0AYVDGaUD868MvxuY0Cc/23Rb8AJwKN49Oqmrv9/rF VqctJ8RefDBuhO6DnQhqPjxJRZcWPFOOZ9jQ7sabBaEXUCRc6V513J3klcErpVS5HG08qlbuO invL6LMltkZEEDZ0NUT8lZWIvZ957I5S1SlH67IfU3w7OzBGUoscvZ4neMpCRlQq7NCFXlPgI fC7rbpPYiRgW8BNMCCpOgPlHC7FaeOBrLRBNUazD5+fHrEV3BTXNJlYN0g2qegLE7kd1M2Waj WPbxMF7oxfCqStIFJn4ElYIdp/76FxftKjr3Kqn9EpkCXMHk+NZ+emsGF1I46Nai2ebmWPjvO MEPNn8G/Nr9gI8S/2D6Z6HqFn84/+apZecER9FG6LW1SSAhEDRga91KOeSzR3l7NuthBu2hZO VjoWF5Z X-Spam-Status: No, score=-11.3 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, FREEMAIL_FROM, GIT_PATCH_0, KAM_NUMSUBJECT, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H5, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE, WEIRD_PORT 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: 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+incoming=patchwork.ozlabs.org@gcc.gnu.org Sender: "Gcc-patches" Dear Fortranners, when referencing a bad array section after an erroneous previous declaration we might hit an assert. The assert can be replaced by a more gracious error recovery. Reported by Gerhard. Regtested on x86_64-pc-linux-gnu. OK for mainline? Thanks, Harald From d0250b563eb51f5f5fba5a73a40451cedeb5900d Mon Sep 17 00:00:00 2001 From: Harald Anlauf Date: Thu, 10 Feb 2022 21:22:48 +0100 Subject: [PATCH] Fortran: improve error recovery on bad array section gcc/fortran/ChangeLog: PR fortran/104211 * expr.cc (find_array_section): Replace assertion by error recovery when encountering bad array constructor. gcc/testsuite/ChangeLog: PR fortran/104211 * gfortran.dg/pr104211.f90: New test. --- gcc/fortran/expr.cc | 8 +++++++- gcc/testsuite/gfortran.dg/pr104211.f90 | 11 +++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gfortran.dg/pr104211.f90 diff --git a/gcc/fortran/expr.cc b/gcc/fortran/expr.cc index ed82a94022f..c9c0ba4cc2e 100644 --- a/gcc/fortran/expr.cc +++ b/gcc/fortran/expr.cc @@ -1718,7 +1718,13 @@ find_array_section (gfc_expr *expr, gfc_ref *ref) } cons = gfc_constructor_lookup (base, limit); - gcc_assert (cons); + if (cons == NULL) + { + gfc_error ("Error in array constructor referenced at %L", + &ref->u.ar.where); + t = false; + goto cleanup; + } gfc_constructor_append_expr (&expr->value.constructor, gfc_copy_expr (cons->expr), NULL); } diff --git a/gcc/testsuite/gfortran.dg/pr104211.f90 b/gcc/testsuite/gfortran.dg/pr104211.f90 new file mode 100644 index 00000000000..21b0a26a17f --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr104211.f90 @@ -0,0 +1,11 @@ +! { dg-do compile } +! PR fortran/104211 - ICE in find_array_section +! Contributed by G.Steinmetz + +program p + type t + real :: n + end type + type(t), parameter :: a(3) = [t(2)] ! { dg-error "Different shape" } + type(t), parameter :: b(2) = a(2:3) ! { dg-error "Error in array constructor" } +end -- 2.34.1