From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mout.gmx.net (mout.gmx.net [212.227.17.22]) by sourceware.org (Postfix) with ESMTPS id 3DF843865479; Wed, 31 Mar 2021 21:09:01 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 3DF843865479 X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from [93.207.87.97] ([93.207.87.97]) by web-mail.gmx.net (3c-app-gmx-bap04.server.lan [172.19.172.74]) (via HTTP); Wed, 31 Mar 2021 23:08:59 +0200 MIME-Version: 1.0 Message-ID: From: Harald Anlauf To: fortran , gcc-patches Subject: [PATCH] PR fortran/99840 - [8/9/10/11 Regression] ICE in gfc_simplify_matmul, at fortran/simplify.c:4777 Content-Type: multipart/mixed; boundary=refeik-40698c3c-87f1-4b47-9664-bb74e583e5b2 Date: Wed, 31 Mar 2021 23:08:59 +0200 Importance: normal Sensitivity: Normal X-Priority: 3 X-Provags-ID: V03:K1:i1HNKGBr/82ErQL0RYIlgaHyjIEycwCXRGg0KfrAeDxw45WHHusl2agNYUsNBr+0VyLTH 43NAXDAdvvnMMqfwWzbpNt3jBz2CGsXALT8CYqSNff+Alrd2aCidqMkk4oLBcFtGByVomZbtJecF 8InVZQL6Ez9PD+Apa3pcdCF2mW2KLvKrSLvlopvtfVRTS+B0MQCGr/iUKcLChG823fJKwQRFl2yA rlGeQAIuD82ach7TYEYVb96ePplLIO27k4K3z7DA3TEa5I0P2ZL6oZQ0sW8WLgcduV9ron8c95do Qs= X-UI-Out-Filterresults: notjunk:1;V03:K0:KG+MSq/gs2I=:Viim/PDsxDrx8zXGviz53M F6acLrqEuLSi6twaU5YN7LfKISSZGte17ySUKcpokR5+ZDe51C0h9h6QsRdgQswMCqC1CKxnp jzltdNAyNKiKzR5jSOMcFsdguFp/dQlYVDQJSKaTHm58MkGI9tN6Hf2ELaMolUZHut0Mf7fCa p1j6FRPQm7TBCX0QxZPiCP0KdUmb0G7ILOnSx7gcQbpV1YQepsRgMGCV6jp8BJB3ZrfDt3VZL 3gdS8psg6eoI6vG1ZP5DhyEOcUxhXZeSR3HpNk0NbYCFZjdTEsv0OwInil7mKEwiwdso0zHlx vUXFjpODAuNoepdVTj+tN0BEYWEEmdKFPucuh2wD1zRbL4l/HoeeCMsY0OHIXjTAYTy0bH7ny 88lgVUwaj+L+NyKtPIWyRVkohRGPDTa0pFDL+gAm9Gl+xdDXuWDpmMRbOLGjC0USDrUPlCVPl QWVxdreMDHrG6MUwD63pGcbzU/ZdMhq8uC1ekZtXXANJq/USWf7C9IESw4EmMnlD71nGSNMTx JYqOe6k3XnGNpiMeRIS1Zuia+8zK6KuV7Ea1U0fX/8G3dOdE+GAKiCa6wRcGvh2mElD1E0jkW dxExdyjJED4isRfbSQm91vsfw+nXEkCExDjzSIiwEsTIiYgz6ABieRpLao+/AuBv2V6bTljK2 RDlHQLoH5bAw/hF5t0WIsamgzHlhGVtjC0F4MPtwCqTiq8BtNA1TpFuVHaGykbpJQeAcO43cj +imc9miyzIhJ2QapVQGYAFOMBHjgrAgIDUYCxF01l8XFhNaiM31F2tCsqUOG6GFne2H8WkA5K gZvimobS0YCmUxljeST/Uku+32lx6C0Mk3SduPmAmXfHk4iy3kXbhBqRpvYy520uc+ROf5PNN U3HSJGuqtYs6d78SM8D5Y1xm1ZwZUOwsQhUK6vPQHk5QqpJy9q/Va/PcVuh8W4 X-Spam-Status: No, score=-11.2 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, FREEMAIL_FROM, GIT_PATCH_0, KAM_NUMSUBJECT, 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: Wed, 31 Mar 2021 21:09:03 -0000 --refeik-40698c3c-87f1-4b47-9664-bb74e583e5b2 Content-Type: text/plain; charset=UTF-8 Dear all, the simplification of the TRANSPOSE of a zero-sized array would lead to an ICE if the result was used in a subsequent simplification of a MATMUL. The reason was the lack of the proper initialization of the shape, which is mpz_t. Use mpz_init_set instead of mpz_set. Regtested on x86_64-pc-linux-gnu. OK for mainline? Since this is a regression, backport to all affected branches? Thanks, Harald PR fortran/99840 - ICE in gfc_simplify_matmul, at fortran/simplify.c:4777 The simplification of the transposition of a constant array shall properly initialize and set the shape of the result. gcc/fortran/ChangeLog: PR fortran/99840 * simplify.c (gfc_simplify_transpose): Properly initialize resulting shape. gcc/testsuite/ChangeLog: PR fortran/99840 * gfortran.dg/transpose_5.f90: New test. --refeik-40698c3c-87f1-4b47-9664-bb74e583e5b2 Content-Type: text/x-patch Content-Disposition: attachment; filename=pr99840.patch Content-Transfer-Encoding: quoted-printable diff --git a/gcc/fortran/simplify.c b/gcc/fortran/simplify.c index 388aca7c38c..c27b47aa98f 100644 =2D-- a/gcc/fortran/simplify.c +++ b/gcc/fortran/simplify.c @@ -8123,8 +8123,8 @@ gfc_simplify_transpose (gfc_expr *matrix) &matrix->where); result->rank =3D 2; result->shape =3D gfc_get_shape (result->rank); - mpz_set (result->shape[0], matrix->shape[1]); - mpz_set (result->shape[1], matrix->shape[0]); + mpz_init_set (result->shape[0], matrix->shape[1]); + mpz_init_set (result->shape[1], matrix->shape[0]); if (matrix->ts.type =3D=3D BT_CHARACTER) result->ts.u.cl =3D matrix->ts.u.cl; diff --git a/gcc/testsuite/gfortran.dg/transpose_5.f90 b/gcc/testsuite/gfo= rtran.dg/transpose_5.f90 new file mode 100644 index 00000000000..682b1c8552b =2D-- /dev/null +++ b/gcc/testsuite/gfortran.dg/transpose_5.f90 @@ -0,0 +1,8 @@ +! { dg-do compiler } +! { dg-options "-O2" } +! PR fortran/99840 - ICE in gfc_simplify_matmul, at fortran/simplify.c:47= 77 +program p + integer, parameter :: x(0,0) =3D 0 + integer :: y(0,0) + y =3D matmul (x, transpose(x)) +end --refeik-40698c3c-87f1-4b47-9664-bb74e583e5b2--