From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mout.gmx.net (mout.gmx.net [212.227.15.19]) by sourceware.org (Postfix) with ESMTPS id 7B1523858D37; Wed, 6 Apr 2022 20:30:27 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 7B1523858D37 X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from [79.251.10.114] ([79.251.10.114]) by web-mail.gmx.net (3c-app-gmx-bs55.server.lan [172.19.170.139]) (via HTTP); Wed, 6 Apr 2022 22:30:26 +0200 MIME-Version: 1.0 Message-ID: From: Harald Anlauf To: fortran , gcc-patches Subject: [PATCH] PR fortran/105184 - ICE in gfc_array_init_size, at fortran/trans-array.cc:5841 Content-Type: multipart/mixed; boundary=sgnirk-b3003c69-a7aa-4708-ba92-4dc924d6a92a Date: Wed, 6 Apr 2022 22:30:26 +0200 Importance: normal Sensitivity: Normal X-Priority: 3 X-Provags-ID: V03:K1:0ceN2SlmZF9MTYwB/p3CVmUeBs1QVjqKXlFotiAUiiyaSf7zzo6y+DhQymkHrfaMs7mim cCsLLB5mKltD1HbSu0YoKscIViVQDXS3u/bOPKXM46vtVA1Jk6wxuxJHm6I63aiQKIpUxUlbfI4a OCspMVhmylBwJrbwgm883eUyGnnfgoTqAX8FjLiLgR3E6spwXWmSBWRXWrYKUKxV8cZyKKxGJtZ0 +/uOpSDsa+++V464AJlbDf/NuHuvXBgf3TnSJrOyq7bjEcaJ4u3/j7+nrOH2S8KNkJwZYXjCj+XW xM= X-UI-Out-Filterresults: notjunk:1;V03:K0:qfwdzbE8j2g=:QPCo/oW6Viggd5PxDEaqNw GsemyTv/mBrx96V/CmRhLjLnhjqiMTCYgDYtkiQJleG1bDI/WBTqC4p+395oLrqHFnZ2jBm6d 0jaOHGvX+GyeMU9rsntQL8i+YInG+RzJOtxpPqgnI5RxUdBbmhruQfWXNLJyhebJSIv0tHfXg Qi238KMNKsYf0f9tCosmidLoLYkW93ba8VrG6SRiqxLdxqhu1mXctVmybU6d7qZaABH9wgRuA YATqYL8KMX6BoBiNGRauOkgjFwQos7bNA+poBEEPDNUmmtF/CWtLrWcliimq5rc6NKzEcFEhV vyx3bOgOCPJ25zM6KFbhGdug+GB+lbEsEjuXuQkf2EDXKgyFoAZJLz2JE3ZWc2dsTIxGz23+j eJN7Xoy1R12NEwqIlGNzv7xVImG9TBycmja3ekHghOkITx8pvUOUdWIvvNTDhm4Y/ZAbsaUL0 XkZ0VyaTAknE8E9iimD74xrQqzvitkkC2y+rwl6a0fl+UiLdIBz+pH2gc1mjrkmN2l54NioBl lgFQ4dMaCPCfU05w4UahNbSAuMw0zM8sJkl9DINS5kh3Ib3t1XWVLVE2UKE/TLBxZ0DGeDfBU LePLKZhm9CXyuZ79GrWABW1Fq+NcncNk2ezuWhNg82s3jMcC6/7YmpLM+sPMVpiLAoHbozNB8 fX7X9mMwHTqeCyo8r7i/IxJ5QLobaBJ2Ckr3WvgPGJZVMM2VNMm1dCBGVyPyHcOz5FVUofjup gz20/i11Rfq6tcG2moJXBAUalfVW67//Bj0eeawjQhPTTSIevahd7Tt6fUwj+dRnwHzwhOuI4 T7LOANJ X-Spam-Status: No, score=-12.0 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, FREEMAIL_FROM, GIT_PATCH_0, KAM_NUMSUBJECT, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H4, 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: fortran@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Fortran mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 06 Apr 2022 20:30:29 -0000 --sgnirk-b3003c69-a7aa-4708-ba92-4dc924d6a92a Content-Type: text/plain; charset=UTF-8 Dear all, the logic for checking the allocate-coshape-spec in an ALLOCATE statement was sort of sideways, and allowed to pass invalid specifications to the code generation. The fix seems obvious (to me). Regtested on x86_64-pc-linux-gnu. OK for mainline? (12 or wait for 13?). Thanks, Harald --sgnirk-b3003c69-a7aa-4708-ba92-4dc924d6a92a Content-Type: text/x-patch Content-Disposition: attachment; filename=0001-Fortran-fix-logic-for-checking-coshape-specification.patch Content-Transfer-Encoding: quoted-printable =46rom 2adcdbd40e3a64d1f2d42eb0e0fdcc7e593da137 Mon Sep 17 00:00:00 2001 From: Harald Anlauf Date: Wed, 6 Apr 2022 22:24:21 +0200 Subject: [PATCH] Fortran: fix logic for checking coshape specification in ALLOCATE statement gcc/fortran/ChangeLog: PR fortran/105184 * resolve.cc (resolve_allocate_expr): Fix logic for checking allocate-coshape-spec in ALLOCATE statement. gcc/testsuite/ChangeLog: PR fortran/105184 * gfortran.dg/coarray_44.f90: Adjust expected output. * gfortran.dg/coarray_50.f90: New test. =2D-- gcc/fortran/resolve.cc | 10 +++++----- gcc/testsuite/gfortran.dg/coarray_44.f90 | 2 ++ gcc/testsuite/gfortran.dg/coarray_50.f90 | 17 +++++++++++++++++ 3 files changed, 24 insertions(+), 5 deletions(-) create mode 100644 gcc/testsuite/gfortran.dg/coarray_50.f90 diff --git a/gcc/fortran/resolve.cc b/gcc/fortran/resolve.cc index 21c8797c938..45a04dab703 100644 =2D-- a/gcc/fortran/resolve.cc +++ b/gcc/fortran/resolve.cc @@ -8108,12 +8108,12 @@ resolve_allocate_expr (gfc_expr *e, gfc_code *code= , bool *array_alloc_wo_spec) goto failure; case DIMEN_RANGE: - if (ar->start[i] =3D=3D 0 || ar->end[i] =3D=3D 0) + // F2018:R937: + // allocate-coshape-spec is [ lower-bound-expr : ] upper-bound-expr + if (ar->start[i] =3D=3D 0 || ar->end[i] =3D=3D 0 || ar->stride[i] != =3D NULL) { - /* If ar->stride[i] is NULL, we issued a previous error. */ - if (ar->stride[i] =3D=3D NULL) - gfc_error ("Bad array specification in ALLOCATE statement " - "at %L", &e->where); + gfc_error ("Bad array specification in ALLOCATE statement " + "at %L", &e->where); goto failure; } else if (gfc_dep_compare_expr (ar->start[i], ar->end[i]) =3D=3D 1) diff --git a/gcc/testsuite/gfortran.dg/coarray_44.f90 b/gcc/testsuite/gfor= tran.dg/coarray_44.f90 index 15fb8c76ce4..f83e3e9b19d 100644 =2D-- a/gcc/testsuite/gfortran.dg/coarray_44.f90 +++ b/gcc/testsuite/gfortran.dg/coarray_44.f90 @@ -10,3 +10,5 @@ program pr70071 allocate (z(2)[1::2,*]) ! { dg-error "Bad array dimension" } allocate (z(1::2)[2,*]) ! { dg-error "Bad array specification in ALLOC= ATE" } end program pr70071 + +! { dg-prune-output "Bad array specification in ALLOCATE statement" } diff --git a/gcc/testsuite/gfortran.dg/coarray_50.f90 b/gcc/testsuite/gfor= tran.dg/coarray_50.f90 new file mode 100644 index 00000000000..9e8bd5d53de =2D-- /dev/null +++ b/gcc/testsuite/gfortran.dg/coarray_50.f90 @@ -0,0 +1,17 @@ +! { dg-do compile } +! { dg-options "-fcoarray=3Dsingle" } +! +! PR fortran/105184 +! Based on testcases by Gerhard Steinmetz + +program p + real, allocatable :: x[:,:] + integer :: n =3D 2 + allocate (x[ n, *]) + allocate (x[1:n, *]) + allocate (x[n:n, *]) + allocate (x[ :n, *]) ! { dg-error "Bad array specification" } + allocate (x[::n, *]) ! { dg-error "Bad array specification" } + allocate (x[ :1:1, *]) ! { dg-error "Bad array specification" } + allocate (x[1:n:n, *]) ! { dg-error "Bad array specification" } +end =2D- 2.34.1 --sgnirk-b3003c69-a7aa-4708-ba92-4dc924d6a92a--