From patchwork Mon Nov 1 21:39:52 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Harald Anlauf X-Patchwork-Id: 46927 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 F3F08385801F for ; Mon, 1 Nov 2021 21:41:06 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org F3F08385801F DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1635802867; bh=Rg+XQeeqcHOuBTtO/ooCin859NPvKVkcnSi/Or2O/2w=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=RdSx6QRW3QxwKg7jzL+sQey1D9FBsP0GBrW+YSu7Gf9dqNmSKZxcm3Ya3VrIoNQUB xA/vQn1i4iUpL2iL9J/kXLsQZB867AvNpV+w4V2zD0LkxRA9D1osmre1obZOEktLnJ G3Gh1vndwL/6K5xVZhAHpYJ74pmE8j3idH9GvMfs= 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.17.20]) by sourceware.org (Postfix) with ESMTPS id A9A65385801D; Mon, 1 Nov 2021 21:39:54 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org A9A65385801D X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from [79.251.10.64] ([79.251.10.64]) by web-mail.gmx.net (3c-app-gmx-bap65.server.lan [172.19.172.65]) (via HTTP); Mon, 1 Nov 2021 22:39:52 +0100 MIME-Version: 1.0 Message-ID: To: fortran , gcc-patches Subject: [PATCH] PR fortran/102817 - [12 Regression] ICE in gfc_clear_shape, at fortran/expr.c:422 Date: Mon, 1 Nov 2021 22:39:52 +0100 Importance: normal Sensitivity: Normal X-Priority: 3 X-Provags-ID: V03:K1:/QdQhvI7rT4eha6dwfMrQWUVpcZaH3Lrqze9IwgK2Wznx+FIezefuOM6Tl3S2QshlcAEB 6BJyd6LtMHvYQSqmHXPhA+/6wWfXgBuNrOWhnsRcCuOKUiHmW9daFZg/UJji6T3z6rCZ8nktI6Ga THy7EJFBnP1CeiYpC6PUAko0Tuki8OFYKijcf+hYhgoMhLoBzoCiagZCMXkNVN65X5gQQKRkb9Y+ 1dC2MH1X4Fv5g+jEAqtiAUQUnd6kk7f4KX8eRDkpLdFiLSPKKdBt6tbgTOznzGQAXxg+H8sEdKZ7 Jw= X-UI-Out-Filterresults: notjunk:1;V03:K0:2SIwtgCK14U=:lyGj7OuuXKri9hTjdAuC37 GEJmJYtx5LUeUbeNngtZMOk3BGiyDwRaYVhMerxHUg90D3/3sOacNGAxYIgwZyIokFwhxkWKo oBwEti6iGwPqFu8AvA+zJP0dFjNOZCPW+7oQ7vF+IliRRcUk9R1rgNfI+ffMeKi93qe/wQvvC 1KOs+1rlhYo6shTtfY1toO5IYXGL3wP6d04+rGVw0LwB2rUdRsfcNlxntmzxlIzzBWM4HAcV7 WT/4agt8r/eHH15/0oxmVL2OFG+m6Aq/GtdLxWF/rZYDRecbDK2l5o4EVjixntVZgWhEQnwMo z2bGYOZt9YAHiTljEQPX51CXrawdZQoM6CtiA27S/eHmGx/Z46IsgGwUvMl8old/HXNUlWnFp uGu3hGYAYLH7IKFeeNwSHhZfgue8x+6CR2nSpBy5ezhwkZ2bNdWWBEjieIArnTIonfJrtX8Th 1RpNBFhblZQm/0wi2o30QmX/tybgsiuILKIOhZWo/HHnkGhiZjX+j+QAGjR5x547GzmI3edJ1 aDXrNQXSQjcGZAJb7UTGyxv1p06T5ZWzH1i3tW6d9yoh9F0UI0yGTSufr71YmtrReMV3PQ8Ja BSLlLcXVFshn08+QxoSzNO/mn+Ywva/a6vgOwMLzu2YQztnZuIvrpFL3/8KkKCmkfqXPD7wnY M/Bu7u1ChDEz35JFR+8xF4Lrw1bv1vpYFl0E0AYgcFRft81YhhxL9B8FSSLFgtLI6KkkM2foU 1CuhBM46b1s/lBSCTgIQpNe5pbEc0UcDZUHWFIs5/4XIrnKt8IGo2rA5a2KCfqQZ4CxqX8XwE QJpxOAe X-Spam-Status: No, score=-11.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, FREEMAIL_FROM, GIT_PATCH_0, KAM_NUMSUBJECT, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_PASS, TXREP 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+patchwork=sourceware.org@gcc.gnu.org Sender: "Gcc-patches" Dear Fortranners, a recent patch uncovered a latent issue with simplification of array-valued expressions where the resulting shape was not set from the referenced subobject. Once found, the fix looks obvious. Regtested on x86_64-pc-linux-gnu. OK? Thanks, Harald Fortran: fix simplification of array-valued parameter expressions gcc/fortran/ChangeLog: PR fortran/102817 * expr.c (simplify_parameter_variable): Copy shape of referenced subobject when simplifying. gcc/testsuite/ChangeLog: PR fortran/102817 * gfortran.dg/pr102817.f90: New test. diff --git a/gcc/fortran/expr.c b/gcc/fortran/expr.c index 4dea840e348..c5360dfaede 100644 --- a/gcc/fortran/expr.c +++ b/gcc/fortran/expr.c @@ -2129,6 +2129,7 @@ simplify_parameter_variable (gfc_expr *p, int type) return false; e->rank = p->rank; + e->shape = gfc_copy_shape (p->shape, p->rank); if (e->ts.type == BT_CHARACTER && p->ts.u.cl) e->ts = p->ts; diff --git a/gcc/testsuite/gfortran.dg/pr102817.f90 b/gcc/testsuite/gfortran.dg/pr102817.f90 new file mode 100644 index 00000000000..c081a69f0ea --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr102817.f90 @@ -0,0 +1,17 @@ +! { dg-do compile } +! PR fortran/102817 - ICE in gfc_clear_shape + +program test + type t + integer :: a(1,2) = 3 + end type t + type(t), parameter :: u = t(4) + type(t), parameter :: x(1) = t(4) + integer, parameter :: p(1,2) = (x(1)%a) + integer :: z(1,2) = (x(1)%a) + integer :: y(1,2), v(1,2), w(1,2) + v = (u %a) + w = x(1)%a + y = (x(1)%a) + print *, v, w, y, z, p +end