From: Harald Anlauf Date: Thu, 1 Apr 2021 05:49:32 +0000 (+0200) Subject: PR fortran/99840 - ICE in gfc_simplify_matmul, at fortran/simplify.c:4777 X-Git-Tag: basepoints/gcc-12~314 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d7cef070bf43bfb3f3d77bac42eadea06c4b0281;p=thirdparty%2Fgcc.git 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. --- diff --git a/gcc/fortran/simplify.c b/gcc/fortran/simplify.c index 388aca7c38cc..c27b47aa98fd 100644 --- a/gcc/fortran/simplify.c +++ b/gcc/fortran/simplify.c @@ -8123,8 +8123,8 @@ gfc_simplify_transpose (gfc_expr *matrix) &matrix->where); result->rank = 2; result->shape = 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 == BT_CHARACTER) result->ts.u.cl = matrix->ts.u.cl; diff --git a/gcc/testsuite/gfortran.dg/transpose_5.f90 b/gcc/testsuite/gfortran.dg/transpose_5.f90 new file mode 100644 index 000000000000..ed4b643acbf6 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/transpose_5.f90 @@ -0,0 +1,8 @@ +! { dg-do compile } +! { dg-options "-O2" } +! PR fortran/99840 - ICE in gfc_simplify_matmul, at fortran/simplify.c:4777 +program p + integer, parameter :: x(0,0) = 0 + integer :: y(0,0) + y = matmul (x, transpose(x)) +end