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 2C2943857C4A; Fri, 19 Jan 2024 20:32:59 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 2C2943857C4A 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 2C2943857C4A Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=212.227.17.21 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1705696381; cv=none; b=HO7QGCeDTXzhJABsoWaTniCAi70H2hXLmsIG71s6lAqt4I8I+OSU6g//b+gbuwmGC/ailW9AzXCxF3/U1xgopGD4ur58jcjhsJ9pUesMn9xYdu+MFITRAYofHuDXSwJ3VhsE5BRHCv1iYEP83ALk0kdzVoCR0L6Aw16zszy1cKM= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1705696381; c=relaxed/simple; bh=riINEDw0PVnulxKUGtHLQhdPBIp4CP3q98EDs8PLXjM=; h=DKIM-Signature:MIME-Version:Message-ID:From:To:Subject:Date; b=O9wCz01Yl1tI2ge2WPTEfvxKkyKXsg+MSWSqrHixLE12U/4YoI29EkzwUQFQVIHhhWEGWIr0Egjo+8L/iBtNk5tAxqvsSv2CvaZaFIxlkGJJkOVxnnIb23SX0Gt1O7/j7ag5cjC4VpwuiO+sEzOpz2tIW/q7IR+utOVDHAPe0os= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.de; s=s31663417; t=1705696377; x=1706301177; i=anlauf@gmx.de; bh=riINEDw0PVnulxKUGtHLQhdPBIp4CP3q98EDs8PLXjM=; h=X-UI-Sender-Class:From:To:Subject:Date; b=SrfgATKo430jjuY9xYlxmEEEVsEo84K52ai1CnbpvypS0r9gz/4tKjX5AtXMsXOM i6dKHaho4Jr9ius11Ba3SS5JltQcM198CsUp/JIeP4BWpKAqvpVtGrAv34TboT/YD SLjOaQ/ThRS03kXtcuFLRHaM/9IePfix4aVIeTW3Bg1mq430jCaa5skPDiVzX695/ fZkf0fcLGbcrqkELNHtzLS2tMSB0O6Kxy0AaWNj8JU6T3Ng7SJm1t/bxpZMtAnmff JeroRYayyXSqjJtKUEU1fgaglNXVE4LC6doBVI1k3i0BK2wedmspZRfaTWFrYP/8M MYywpeMKlsra994w3g== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from [93.207.83.237] ([93.207.83.237]) by web-mail.gmx.net (3c-app-gmx-bap08.server.lan [172.19.172.78]) (via HTTP); Fri, 19 Jan 2024 21:32:57 +0100 MIME-Version: 1.0 Message-ID: From: Harald Anlauf To: fortran , gcc-patches Subject: [PATCH, committed] Fortran: fix wrong array bounds check [PR113471] Content-Type: multipart/mixed; boundary=sgnirk-b2a07526-290b-4550-ac55-b4545a32cb1d Date: Fri, 19 Jan 2024 21:32:57 +0100 Importance: normal Sensitivity: Normal X-Priority: 3 X-Provags-ID: V03:K1:gHTnYNqpAx3M3kpWi/j/+Fe4mIK4RwJWkLMk4Yc6f1wwKRv/3gzcfY5nacvjSxxAJ7fdS tUR3nnda9UfnsLlzXFXh9YzphVxch3x/xcM56iPNS5IGkRafCmK+d6txQgmkio/MsDgaitBoTq5A hJwBbovHClPFp4x07Mt12aO0PQjvHNm+2plzpzShXngdNAXZAkCfPDeMMwrmGmJxyX1EZqeTbbVQ D+WjnBsUAMZom4Ba7WEPjrSleXmjo8LpI0gfF4p0D8PyS1xz502cK2Uf/Jnv09CDqTQX5lGZeq1G Fk= UI-OutboundReport: notjunk:1;M01:P0:ihyHMknhaBQ=;FCpNYWw2+vPE6eY7VIZWZpTiwfR UqIIJTtnN55N6IpQl4TQS9ExAs4h5ywsDXE/vYG03JsvqZrr3NWo6PEiIZIPN80P6SReuIcs8 hsFPCzGOj8XPfFBNx3vekwHbkoXPtf8xrAgQ/GTMnNDxmDPeGu9ElnUciUWo4xtBr3g/evH5M mr7ygGxyoG05n2GsZ3ceOuEukjpFXqq34gu02x1B9cIuuZcDG3ryedRZsVevJlFBRBq13hM04 9irZY774bSIOcBXZxGq3BOzH7w/jcb2xq0aC6CWDiHyreGz2m//cRAFGdKKZBxBdFV116ewhC aOn+0smBwuaMYAHDXAqNea/httrmumBhW0KXUg3uBz0nFVQLqRc0Wz8zb+KDrnOtOpA1zki++ T3utp8HVIYm03ALQNIjzvmH2S6/fiO6IhrxxC1dA7Ez3qHLyceHCBP4XgpYBWw0QkbFLKn70M hk7lb7qGbN7rBAlQaUtX2/wLSLJy26iJbHcvrtqzpaHZ1zgkxvcIwNjOCGgJpvc4t/2S7TrFN 9ezE469YhPBR0Ip14Blvnl/uCWIMFs+/kS2XfNYINct5syuqKkWAVYClsr+rJwhCJ+sjfi4FN 5EQ33AKKo2A3cYj1H05Awye8DsBrHz0AOfta9uhvsY8sCgxiwhKcJiclzTDkPhEJzkq634KgM nJFn98AQMw7pTApRKxIgK4nFDCTueYCCPHdK5pJXYtdoXwfIbYN8OCeyuXR+O4OE7AKmeYCcI H2dyVss4LXTsL3SzeL0Sm9UTr5S4nPx41C66UdkGr3BAgItbTS+bPwSLNSbeuKyAFAz0gfrM4 49tVHq+dxt0x/UulC2Tiuklw== X-Spam-Status: No, score=-12.5 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_H4,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE 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: --sgnirk-b2a07526-290b-4550-ac55-b4545a32cb1d Content-Type: text/plain; charset=UTF-8 Dear all, I've pushed the attached obvious patch for a regression due to a wrong array bounds check after regtesting on x86_64-pc-linux-gnu and verification of the fix by the reporter in the PR. https://gcc.gnu.org/g:94b2e6cb1cc4feb122bf77f19a657c97bffa9b42 Thanks, Harald --sgnirk-b2a07526-290b-4550-ac55-b4545a32cb1d Content-Type: text/x-patch Content-Disposition: attachment; filename=pr113471.diff Content-Transfer-Encoding: quoted-printable =46rom 94b2e6cb1cc4feb122bf77f19a657c97bffa9b42 Mon Sep 17 00:00:00 2001 From: Harald Anlauf Date: Fri, 19 Jan 2024 21:20:44 +0100 Subject: [PATCH] Fortran: fix wrong array bounds check [PR113471] gcc/fortran/ChangeLog: PR fortran/113471 * trans-array.cc (array_bound_check_elemental): Array bounds check shall apply here to elemental dimensions of an array section only. gcc/testsuite/ChangeLog: PR fortran/113471 * gfortran.dg/bounds_check_24.f90: New test. =2D-- gcc/fortran/trans-array.cc | 2 +- gcc/testsuite/gfortran.dg/bounds_check_24.f90 | 28 +++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gfortran.dg/bounds_check_24.f90 diff --git a/gcc/fortran/trans-array.cc b/gcc/fortran/trans-array.cc index 26e7adaa03f..878a92aff18 100644 =2D-- a/gcc/fortran/trans-array.cc +++ b/gcc/fortran/trans-array.cc @@ -3600,7 +3600,7 @@ array_bound_check_elemental (gfc_se * se, gfc_ss * s= s, gfc_expr * expr) continue; } - if (ref->type =3D=3D REF_ARRAY && ref->u.ar.dimen > 0) + if (ref->type =3D=3D REF_ARRAY && ref->u.ar.type =3D=3D AR_SECTION) { ar =3D &ref->u.ar; for (dim =3D 0; dim < ar->dimen; dim++) diff --git a/gcc/testsuite/gfortran.dg/bounds_check_24.f90 b/gcc/testsuite= /gfortran.dg/bounds_check_24.f90 new file mode 100644 index 00000000000..d0251e8455b =2D-- /dev/null +++ b/gcc/testsuite/gfortran.dg/bounds_check_24.f90 @@ -0,0 +1,28 @@ +! { dg-do compile } +! { dg-additional-options "-fcheck=3Dbounds -fdump-tree-original" } +! +! PR fortran/113471 - wrong array bounds check + +program pr113471 + implicit none + type t + integer, dimension(2) :: c1 =3D 0 + end type t + type(t) :: cc(7), bb(7) + integer :: kk =3D 1 + + ! no bounds check (can be determined at compile time): + call foo (cc(7)% c1) + + ! bounds check involving kk, but no "outside of expected range" + call foo (bb(kk)% c1) + +contains + subroutine foo (c) + integer, intent(in) :: c(:) + end +end + +! { dg-final { scan-tree-dump-times "below lower bound" 2 "original" } } +! { dg-final { scan-tree-dump-times "above upper bound" 2 "original" } } +! { dg-final { scan-tree-dump-not "outside of expected range" "original" = } } =2D- 2.35.3 --sgnirk-b2a07526-290b-4550-ac55-b4545a32cb1d--