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 F04743858028; Mon, 22 Feb 2021 21:14:04 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org F04743858028 X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from [93.207.92.235] ([93.207.92.235]) by web-mail.gmx.net (3c-app-gmx-bs32.server.lan [172.19.170.84]) (via HTTP); Mon, 22 Feb 2021 22:14:03 +0100 MIME-Version: 1.0 Message-ID: From: Harald Anlauf To: fortran , gcc-patches Subject: [PATCH] PR fortran/99206 - [11 Regression] ICE in add_init_expr_to_sym, at fortran/decl.c:1980 Content-Type: multipart/mixed; boundary=trekuen-ef8e5991-438b-4f4c-9021-a26f5173bc39 Date: Mon, 22 Feb 2021 22:14:03 +0100 Importance: normal Sensitivity: Normal X-Priority: 3 X-Provags-ID: V03:K1:0vCbvBL6Zvg78rswC799VWOXtc0qhE4qWNMk1Iu/OP/dGUFo0ILQdA2hVxoU+d5n8pn09 1Agp8NykX2udpBoGk34T9kL8dvEJXdMSHP+fu8HNJbnyLo8M8g9dFEmmeRySkMVFVvyIhAWLfihd Y9epWCJNP+OxEz2FlP78ZqfVmvY6jw1ibmZJxX7sG+XkoYCpFm6Y1cAAMvg0D6Ik9HHuSc33RyNG jNWlupwMdf7FimjAv/rZNJCoKHu3gKkyZfDvwQNBPCCayQrWql+Umta7zX/JAJIvFTlDbzuxwwrz zc= X-UI-Out-Filterresults: notjunk:1;V03:K0:UNTPqSKi4Ms=:F+Z+Avzzpf3fGEQJ/iHmVN l/CruOkYiaSjRhKqmZLlwbf4SjmFLZvVy1i8wjkEnHMbi5m54yJaBxSm9rUuu4FbzdYdYNvrP AlXNjd67O72RYm8nnZyJA5MLS9ZfSfNe1ZLLqBwSX41t8qmiw94+9Z7ZIYDTuiJ55yKNqJyRH EqSvRMPPIq8EzUbF89/Ul4XrmAOut8XmgYH/tx1ERpgTlhe57UbV1mheIqLs3FejlQ8dNmYO7 iBY95EWK5sRo4UVteo+8iv/FHYKVRmVeJvhN1fnBxkR389E9y1Gz3pPqDnqWZwnpyXyyvc1NW 6s1pSYC1Z+8vAksCtdiwOXNDC2wX86NjScrKUDlDpOzG3BoV454c2XJ6iTT69QnR/pA5wNMJy 0bD9Mq9V3278wsEWQ59sptboJETWf11RFO8GahM0BqS2dB1HQdGb6WcuqFSWNUjONvpQs+koQ PIyy5I5+mmwyFYgL8wH3q7oBl76f5yEkRsRzQT3p8LADzkSnvxzW8FqKXpkqVQbF16YpLmFWM 49EFNKo6Ym7rRxUI6UzsREaLM/LBWHY/uZfdhZot9hvrNdpvFgcSAljGhfrjfVBnH6v1e1wF/ AjLGXY2nefRdI= X-Spam-Status: No, score=-10.2 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, FREEMAIL_FROM, GIT_PATCH_0, KAM_NUMSUBJECT, RCVD_IN_BARRACUDACENTRAL, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) 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: Mon, 22 Feb 2021 21:14:08 -0000 --trekuen-ef8e5991-438b-4f4c-9021-a26f5173bc39 Content-Type: text/plain; charset=UTF-8 Dear all, when simplifying the RESHAPE intrinsic we lost the string length when the resulting array had size zero. The attached patch sets the resulting length from the source. Regtested on x86_64-pc-linux-gnu. OK for mainline? Thanks, Harald PR fortran/99206 - ICE in add_init_expr_to_sym, at fortran/decl.c:1980 Make sure that the string length is properly set during simplification even when the resulting array is zero-sized. gcc/fortran/ChangeLog: PR fortran/99206 * simplify.c (gfc_simplify_reshape): Set string length for character arguments. gcc/testsuite/ChangeLog: PR fortran/99206 * gfortran.dg/reshape_zerosize_4.f90: New test. --trekuen-ef8e5991-438b-4f4c-9021-a26f5173bc39 Content-Type: text/x-patch Content-Disposition: attachment; filename=pr99206.patch diff --git a/gcc/fortran/simplify.c b/gcc/fortran/simplify.c index 35f267db588..388aca7c38c 100644 --- a/gcc/fortran/simplify.c +++ b/gcc/fortran/simplify.c @@ -6887,6 +6887,8 @@ gfc_simplify_reshape (gfc_expr *source, gfc_expr *shape_exp, &source->where); if (source->ts.type == BT_DERIVED) result->ts.u.derived = source->ts.u.derived; + if (source->ts.type == BT_CHARACTER && result->ts.u.cl == NULL) + result->ts = source->ts; result->rank = rank; result->shape = gfc_get_shape (rank); for (i = 0; i < rank; i++) diff --git a/gcc/testsuite/gfortran.dg/reshape_zerosize_4.f90 b/gcc/testsuite/gfortran.dg/reshape_zerosize_4.f90 new file mode 100644 index 00000000000..d9a0d217271 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/reshape_zerosize_4.f90 @@ -0,0 +1,14 @@ +! { dg-do run } +! PR fortran/99206 - ICE in add_init_expr_to_sym, at fortran/decl.c:1980 +! Check simplifier of RESHAPE for character arrays. + +program p + character(*), parameter :: a(0) = reshape([ 'ab'], [0]) + character(*,kind=4), parameter :: c(0) = reshape([4_'cd'], [0]) + if (len (a) /= 2) stop 1 + if (len (reshape ( ['ab'], [0])) /= 2) stop 2 + if (kind(reshape ( ['ab'], [0])) /= 1) stop 3 + if (len (c) /= 2) stop 4 + if (len (reshape ([4_'cd'], [0])) /= 2) stop 5 + if (kind(reshape ([4_'cd'], [0])) /= 4) stop 6 +end --trekuen-ef8e5991-438b-4f4c-9021-a26f5173bc39--