From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mout.gmx.net (mout.gmx.net [212.227.17.20]) by sourceware.org (Postfix) with ESMTPS id F0FED3858C54; Mon, 16 Oct 2023 19:11:44 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org F0FED3858C54 Authentication-Results: sourceware.org; dmarc=pass (p=none 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 F0FED3858C54 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=212.227.17.20 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1697483506; cv=none; b=DYZeKs0Tq/SaOgqO1GNTUKM6kzxlfgPXn7aFjLYyGNJu1K+4m8cG5SR3RsRddQIcsDvCxYIxTUH3AtBdRzQcotIeLRSEhIX6vlTXz1I3RqeFXbW+larmID6JcqESns+4lwygZUUkNe3h1ikzhtzyGmkGsF5Y1LxMXEFnYlIQvPE= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1697483506; c=relaxed/simple; bh=xjXDtvItLfhyZpG/PqoQ9kIi2XWAtaBBfZOc7sZONnk=; h=DKIM-Signature:MIME-Version:Message-ID:From:To:Subject:Date; b=lb7l3NBNE05D2HkRz0Dp9sLooQV5bAqceGEdTsLNn1Dwps3Wce4HS4EN/HI7hV/QMQLvm4j8ukIAbFdhZ7ufw6/IJS03DbeagZOX69xHhjSPk8MjBiPO0UJ7a4FVpHtGNi+sd0sLfeY8VW4qW5LtlMiaF2OUG9Bb3LQh9I5lfQc= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.de; s=s31663417; t=1697483503; x=1698088303; i=anlauf@gmx.de; bh=xjXDtvItLfhyZpG/PqoQ9kIi2XWAtaBBfZOc7sZONnk=; h=X-UI-Sender-Class:From:To:Subject:Date; b=tsv2UNZnjLQkHw+cZCuMAw1sXcAPxyzRn/exvnCR6Tep4lT37K4ZwCyfmhrE7iOFPM3quvFFCoV NCW8nbhybioZDWaGOHit1wbCBjeImaxEsLqm6swapFr8MbFPplNT8bQoWehCUi4Wh3dNjoe5Pk7Oc 5bqQi+DKhXY6FTW9kgYLwLJLC9Dy7v4qVE6+StrEAv7Mr4QHgVxunpKDTLNbmP9qkOPkrf7IVqlpL 3qDvV+lcItmMMNIYXQLydRUHe4ss2zcSQ+FyNLd/dRJAUG89sxmpXsJTn36Q8EBKM+RkigkPWZfAJ YpUXm9P0rfVVMOB9QGLhnOiqDA3fEwImH8Kg== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from [93.207.82.75] ([93.207.82.75]) by web-mail.gmx.net (3c-app-gmx-bap45.server.lan [172.19.172.115]) (via HTTP); Mon, 16 Oct 2023 21:11:43 +0200 MIME-Version: 1.0 Message-ID: From: Harald Anlauf To: fortran , gcc-patches Subject: [PATCH] Fortran: out of bounds access with nested implied-do IO [PR111837] Content-Type: multipart/mixed; boundary=trekuen-1ad44390-d3da-430d-aafc-f0debfa37820 Date: Mon, 16 Oct 2023 21:11:43 +0200 Importance: normal Sensitivity: Normal X-Priority: 3 X-Provags-ID: V03:K1:LWS6vRd2hPvkFZ/PTY/E6xkT9LGAwCfY4S+RHj6K0uwbWAeW8JU2+aLdp4Rucr+JZNTQ7 pqR/feEPWIfm1UbmTxSEEzvxvwjle65jEA7SXvnhiSndruUdO1DWf/UUgMGHkPrdyhdkWz4dem02 HSPi1VjfpkuuygCKmMhwF1U6XFmd74FS9MQsxFjjRFSe6eJij+WIIHqhsNex5TflwvuDLprs081P t1+U3GM6fc++ylNoStiWj9E+gHwGSFZ6VUf4a95ZrUfAalbSM+aAv8dv6Fx3G6jBIY+xhjv0hDFv L8= UI-OutboundReport: notjunk:1;M01:P0:zejxX6Nb31E=;OCZkG9tG2LcYA30uguQBabKrovP QsZOTqIlDNmUzc99EoqFRZXupa4RqIYPxPFnMUUtJvTLTKLqhfua7mk4AFGOMYle5CDg1olz1 eYaQfXbq0YUVaU8aI2pJkAGeCksuPDyzQV0zCjO3OqTJpQOXceUk7dgs3nNoIlysw4QA3l0FL gF0XB7djhJWkCetRF0/3DYRCdr4oSB3LJso+gExap9c8AjUnt5mP4+u1e+ksgQIKYmT1Q0Wuv Fl2ofPK/Zy+mzpSZXUhFIKFy5PUP/Umf/pvD2F6ZWuQtD6J+mxQ7y/dqA7LEh22X2oBJnS79K u4/K//0dGK3MwhSu7caJ+14QCKJkCyqNKCuuPf+hYmgxatgarfGPmhVVQP16H9g+1hBOUAh2Q oOtB80cN3zoCJ7M7tiPmzx7nC5H90R6jLX5TKwx25mH7nGwKE+3dQZ664C1lhuBElTfdWI+1k UZwxq0veJyDZd7AtkY9vYjV9rPe1cqKtCEm/AxySJ18V54QblUy07zwU6ZYTsDeA/trogt6HN JQkRzN71FQjy1eDOBfJ9sTVN5WMTB65VvjJkZMK4ZcStgOIIBabN9ckEkguq9+LIDQ+4sFxJe Csv/PrDZ2InJfC5UM5wwtxlDq8Ycwtov3Mn/O3VR3ZnIGkk59vnNGD1jwJOgwbvXIUplqe4+2 kAe/VuVcBFehAqeRMtSE+1TOw78Gma+USKI69eMA2zF68/QRFNSwH19bMggpDRialszxbfC1Q jsd7waVq1VGLY9mbU7Gg7PQQ1d9u+1ljXa3fPazfoiFBFQICzMENF7lHJN1dMCL7Y4HPSS65M mK6sr/Vz1CODhtfBtcIfIhKw== X-Spam-Status: No, score=-11.8 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_H4,RCVD_IN_MSPIKE_WL,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: --trekuen-1ad44390-d3da-430d-aafc-f0debfa37820 Content-Type: text/plain; charset=UTF-8 Dear All, the attached patch fixes a dependency check in frontend optimzation for nested implied-do IO. The problem appeared for >= 3 loops only as the check considered dependencies to be only of band form instead of triangular form. Regtested on x86_64-pc-linux-gnu. OK for mainline? As this fixes a regression since 8-release, I plan to backport to all active branches. Thanks, Harald --trekuen-1ad44390-d3da-430d-aafc-f0debfa37820 Content-Type: text/x-patch Content-Disposition: attachment; filename=pr111837.diff Content-Transfer-Encoding: quoted-printable =46rom 43ec8b856a67a1b70744e5c0d50ea7fa2dd9a8ee Mon Sep 17 00:00:00 2001 From: Harald Anlauf Date: Mon, 16 Oct 2023 21:02:20 +0200 Subject: [PATCH] Fortran: out of bounds access with nested implied-do IO [PR111837] gcc/fortran/ChangeLog: PR fortran/111837 * frontend-passes.cc (traverse_io_block): Dependency check of loop nest shall be triangular, not banded. gcc/testsuite/ChangeLog: PR fortran/111837 * gfortran.dg/implied_do_io_8.f90: New test. =2D-- gcc/fortran/frontend-passes.cc | 2 +- gcc/testsuite/gfortran.dg/implied_do_io_8.f90 | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gfortran.dg/implied_do_io_8.f90 diff --git a/gcc/fortran/frontend-passes.cc b/gcc/fortran/frontend-passes.= cc index 136a292807d..536884b13f0 100644 =2D-- a/gcc/fortran/frontend-passes.cc +++ b/gcc/fortran/frontend-passes.cc @@ -1326,7 +1326,7 @@ traverse_io_block (gfc_code *code, bool *has_reached= , gfc_code *prev) if (iters[i]) { gfc_expr *var =3D iters[i]->var; - for (int j =3D i - 1; j < i; j++) + for (int j =3D 0; j < i; j++) { if (iters[j] && (var_in_expr (var, iters[j]->start) diff --git a/gcc/testsuite/gfortran.dg/implied_do_io_8.f90 b/gcc/testsuite= /gfortran.dg/implied_do_io_8.f90 new file mode 100644 index 00000000000..c66a0f6fde6 =2D-- /dev/null +++ b/gcc/testsuite/gfortran.dg/implied_do_io_8.f90 @@ -0,0 +1,18 @@ +! { dg-do run } +! { dg-additional-options "-fcheck=3Dbounds" } +! PR fortran/111837 - out of bounds access with front-end optimization + +program implied_do_bug + implicit none + integer :: i,j,k + real :: arr(1,1,1) + integer :: ni(1) + ni(1) =3D 1 + arr =3D 1 + write(*,*) (((arr(i,j,k), i=3D1,ni(k)), k=3D1,1), j=3D1,1) + write(*,*) (((arr(i,j,k), i=3D1,ni(k)), j=3D1,1), k=3D1,1) + write(*,*) (((arr(k,i,j), i=3D1,ni(k)), k=3D1,1), j=3D1,1) + write(*,*) (((arr(k,i,j), i=3D1,ni(k)), j=3D1,1), k=3D1,1) + write(*,*) (((arr(j,k,i), i=3D1,ni(k)), k=3D1,1), j=3D1,1) + write(*,*) (((arr(j,k,i), i=3D1,ni(k)), j=3D1,1), k=3D1,1) +end =2D- 2.35.3 --trekuen-1ad44390-d3da-430d-aafc-f0debfa37820--