diff options
author | Tobias Burnus <burnus@net-b.de> | 2013-02-15 12:17:15 +0100 |
---|---|---|
committer | Tobias Burnus <burnus@gcc.gnu.org> | 2013-02-15 12:17:15 +0100 |
commit | 711db0a61dbaabd31de82202297478c632840f95 (patch) | |
tree | ecc932de0bafe7b1f00422f0e108c4cbfc651409 /gcc/fortran/simplify.c | |
parent | 3fb7c69995f85f8efde91a03a26acf49d35351f8 (diff) | |
download | gcc-711db0a61dbaabd31de82202297478c632840f95.zip gcc-711db0a61dbaabd31de82202297478c632840f95.tar.gz gcc-711db0a61dbaabd31de82202297478c632840f95.tar.bz2 |
re PR fortran/56318 (Wrong result with MATMUL of PARAMETER)
2013-02-14 Tobias Burnus <burnus@net-b.de>
Mikael Morin <mikael@gcc.gnu.org>
PR fortran/56318
* simplify.c (gfc_simplify_matmul): Fix result shape
and matmul result.
2013-02-14 Tobias Burnus <burnus@net-b.de>
PR fortran/56318
* gcc/testsuite/gfortran.dg/matmul_9.f90: New.
Co-Authored-By: Mikael Morin <mikael@gcc.gnu.org>
From-SVN: r196075
Diffstat (limited to 'gcc/fortran/simplify.c')
-rw-r--r-- | gcc/fortran/simplify.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/gcc/fortran/simplify.c b/gcc/fortran/simplify.c index f7401e9..a0909a3 100644 --- a/gcc/fortran/simplify.c +++ b/gcc/fortran/simplify.c @@ -3850,7 +3850,7 @@ gfc_simplify_matmul (gfc_expr *matrix_a, gfc_expr *matrix_b) if (matrix_a->rank == 1 && matrix_b->rank == 2) { result_rows = 1; - result_columns = mpz_get_si (matrix_b->shape[0]); + result_columns = mpz_get_si (matrix_b->shape[1]); stride_a = 1; stride_b = mpz_get_si (matrix_b->shape[0]); @@ -3860,7 +3860,7 @@ gfc_simplify_matmul (gfc_expr *matrix_a, gfc_expr *matrix_b) } else if (matrix_a->rank == 2 && matrix_b->rank == 1) { - result_rows = mpz_get_si (matrix_b->shape[0]); + result_rows = mpz_get_si (matrix_a->shape[0]); result_columns = 1; stride_a = mpz_get_si (matrix_a->shape[0]); stride_b = 1; @@ -3873,7 +3873,7 @@ gfc_simplify_matmul (gfc_expr *matrix_a, gfc_expr *matrix_b) { result_rows = mpz_get_si (matrix_a->shape[0]); result_columns = mpz_get_si (matrix_b->shape[1]); - stride_a = mpz_get_si (matrix_a->shape[1]); + stride_a = mpz_get_si (matrix_a->shape[0]); stride_b = mpz_get_si (matrix_b->shape[0]); result->rank = 2; |