From patchwork Wed Jan 25 19:53:36 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Harald Anlauf X-Patchwork-Id: 63685 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 30C38385802F for ; Wed, 25 Jan 2023 19:54:07 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 30C38385802F DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1674676447; bh=DRtHzhrkBqwG23jxUWQTuhjSObgV6I1dyFo97kGBtFQ=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=DyS67sU/SKdO6Mil+U0g1J0z71+hRYdilJhidF7mXcP+ZuN7J+iJpMmMSHwc2TceB rJ8JirTKlTR95uLFB+OX4+A86pg4BdkrVOKAfl3EegycTPDiTvV6HLyus8UjYRP5Ck b5Z8dF8hZJCuyc201ZIDdoLTrFlheWSuVgDZi6K8= 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 44CAC3858D28; Wed, 25 Jan 2023 19:53:37 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 44CAC3858D28 X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from [93.207.89.26] ([93.207.89.26]) by web-mail.gmx.net (3c-app-gmx-bs46.server.lan [172.19.170.98]) (via HTTP); Wed, 25 Jan 2023 20:53:36 +0100 MIME-Version: 1.0 Message-ID: To: fortran , gcc-patches Subject: [PATCH, committed] Fortran: ICE in gfc_compare_array_spec [PR108528] Date: Wed, 25 Jan 2023 20:53:36 +0100 Importance: normal Sensitivity: Normal X-Priority: 3 X-Provags-ID: V03:K1:d0XXjCzeiJrUhfS+RUewo42CWtMjqa9PFZxCa1YC2f1/NIAj6Kl1/Vmq+LD7RpVTUPMwo INzLpY2BdUDVi9rhINFj4sH8ppEoPeJfK99JLu6VcdRJBZ1xts4jEx8MoeY2ocWEwyVZNLyaaXLq P+eObw8rjOJ/mW5lzdlU/VTGQ7mUmmQq901dw2emeP7ew5wZIwiD7YgldMYQ4fSO8BNrqTyYVbND x9OBGMota25I2iBPhrgkPs7LI+1FAiOm5GfMzq07s4/LEp4e1K0g63JvsU5ILyYL6/iAxl3CP5Ar +A= UI-OutboundReport: notjunk:1;M01:P0:c4Zr88Bqff4=;3pl7Lqvbtlms892gKpbZ0+zSXjH yM1rk7ipaUWHmpg2LbJqwg9WG3bSSOGmIrviAfKeiC84fpR5k/368yjOeXSgl9ox3a7KnBDgb yrNaFmZoZJnn5YxTuiLWyfTv3tzUUjnSVaaR5+aGUKv3vW9mlzodHw3TN48Ft6mlZVlAPjEBh W11pVJ0s4WedWv15YoRIRmzj3aLJUV+RE8XN9CSqbQkpzDAj9UE6z4Kb+0CD/ukFk5+OzzPvQ U7tvmD239xSPeBIIFGLbna9LwQlPhRE8dBJ8PqKn0/LEoWNHvrBalb8/LWd83HYxU7G5RJxkI MsNir4XlqzssL3yj0zuxltJ5JA5BPi17xeRjGBhmwlwom4py0gU4WNASSia1NyqO6tVwZ23Zq NWN4Fr5Pb0CzAdoFJuzyaeIlacAdY0i2XnN4FiY53MCAdPF1328KmS28A00KyatjiGvS9mSxh yL8Q4zmta6U3mJhXtXvEC5wBCubas7/rjhPlRMTo2R1aO845BerwcbUq2l352MXdA9s/KpPm+ E6sHcepKxYeNePXb3fAQj7p3c/5g5iH/L0Ot0TOlOokuCsjfgNbKY2dUgOIJbVnfmNjyLxeb3 eVbJA9hioGTffZkYT0PvB+I/4tx+l2jDATp9GN/lXOfPPvoyGdKKj3BAjtKU6XNAW3E85UgQv Jp9RX2Rzxy9S1R4uoUhinxMZMCtP1C67/Dt68YqxFgDW1eOgGBJMbG9s6LMWT7MHQA4AKj4C0 qao0ANA15KW10LoL6CHoPpUfxMk6JvtoTZENSQXYo4ku+HT6KHTpJFb/3HCHI0wzUvpPDL+fp saxhhmyAk5XOxkHNz2GdACKwqtMOV5+4RRUy67WrKIhJY= X-Spam-Status: No, score=-13.2 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, KAM_SHORT, 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've committed the attached simple and obvious patch by Steve after regtesting on x86_64-pc-linux-gnu. Instead of generating an internal error when wrong types are passed to a bounds comparison, simply return false. Committed: https://gcc.gnu.org/g:9fb9da3d38513d320bfea72050f7a59688595e0b Thanks, Harald From 9fb9da3d38513d320bfea72050f7a59688595e0b Mon Sep 17 00:00:00 2001 From: Steve Kargl Date: Wed, 25 Jan 2023 20:38:43 +0100 Subject: [PATCH] Fortran: ICE in gfc_compare_array_spec [PR108528] gcc/fortran/ChangeLog: PR fortran/108528 * array.cc (compare_bounds): Return false instead of generating an internal error on an invalid argument type. gcc/testsuite/ChangeLog: PR fortran/108528 * gfortran.dg/pr108528.f90: New test. --- gcc/fortran/array.cc | 4 ++-- gcc/testsuite/gfortran.dg/pr108528.f90 | 9 +++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/gfortran.dg/pr108528.f90 diff --git a/gcc/fortran/array.cc b/gcc/fortran/array.cc index e8a2c32a627..be5eb8b6a0f 100644 --- a/gcc/fortran/array.cc +++ b/gcc/fortran/array.cc @@ -967,7 +967,7 @@ gfc_copy_array_spec (gfc_array_spec *src) /* Returns nonzero if the two expressions are equal. - We should not need to support more than constant values, as that’s what is + We should not need to support more than constant values, as that's what is allowed in derived type component array spec. However, we may create types with non-constant array spec for dummy variable class container types, for which the _data component holds the array spec of the variable declaration. @@ -979,7 +979,7 @@ compare_bounds (gfc_expr *bound1, gfc_expr *bound2) if (bound1 == NULL || bound2 == NULL || bound1->ts.type != BT_INTEGER || bound2->ts.type != BT_INTEGER) - gfc_internal_error ("gfc_compare_array_spec(): Array spec clobbered"); + return false; /* What qualifies as identical bounds? We could probably just check that the expressions are exact clones. We avoid rewriting a specific comparison diff --git a/gcc/testsuite/gfortran.dg/pr108528.f90 b/gcc/testsuite/gfortran.dg/pr108528.f90 new file mode 100644 index 00000000000..7a353cb7eab --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr108528.f90 @@ -0,0 +1,9 @@ +! { dg-do compile } +! PR fortran/108528 - +! Contributed by G.Steinmetz + +function f() ! { dg-error "mismatched array specifications" } + integer :: f((2.)) ! { dg-error "must be of INTEGER type" } + integer :: g((2)) +entry g() +end -- 2.35.3