aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Koenig <tkoenig@gcc.gnu.org>2017-05-28 14:02:57 +0000
committerThomas Koenig <tkoenig@gcc.gnu.org>2017-05-28 14:02:57 +0000
commit8364e6aca3381e6572b54ed49299e94887610f9e (patch)
tree4f5958447440e1d671791b3ffc5ca822c8f4d4b4
parent238108d24d602f5e82d5072e19c2b4133139067b (diff)
downloadgcc-8364e6aca3381e6572b54ed49299e94887610f9e.zip
gcc-8364e6aca3381e6572b54ed49299e94887610f9e.tar.gz
gcc-8364e6aca3381e6572b54ed49299e94887610f9e.tar.bz2
frontend-passes.c (matmul_lhs_realloc): Correct allocation size for case A1B2.
2017-05-28 Thomas Koenig <tkoenig@gcc.gnu.org> * frontend-passes.c (matmul_lhs_realloc): Correct allocation size for case A1B2. 2017-05-28 Thomas Koenig <tkoenig@gcc.gnu.org> * gfortran.dg/matmul_bounds_12.f90: New test. From-SVN: r248546
-rw-r--r--gcc/fortran/ChangeLog5
-rw-r--r--gcc/fortran/frontend-passes.c2
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gfortran.dg/matmul_bounds_12.f9017
4 files changed, 27 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 2674815..c9c6a02 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,8 @@
+2017-05-28 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ * frontend-passes.c (matmul_lhs_realloc): Correct
+ allocation size for case A1B2.
+
2017-05-25 Thomas Koenig <tkoenig@gcc.gnu.org>
* dump-parse-tree.c (show_expr): Also replace
diff --git a/gcc/fortran/frontend-passes.c b/gcc/fortran/frontend-passes.c
index 1ea5b54..62cccc8 100644
--- a/gcc/fortran/frontend-passes.c
+++ b/gcc/fortran/frontend-passes.c
@@ -2447,7 +2447,7 @@ matmul_lhs_realloc (gfc_expr *c, gfc_expr *a, gfc_expr *b,
break;
case A1B2:
- ar->start[0] = get_array_inq_function (GFC_ISYM_SIZE, b, 1);
+ ar->start[0] = get_array_inq_function (GFC_ISYM_SIZE, b, 2);
cond = build_logical_expr (INTRINSIC_NE,
get_array_inq_function (GFC_ISYM_SIZE, c, 1),
get_array_inq_function (GFC_ISYM_SIZE, b, 2));
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 55aed10..bdad067 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2017-05-28 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ * gfortran.dg/matmul_bounds_12.f90: New test.
+
2017-05-27 Jakub Jelinek <jakub@redhat.com>
PR bootstrap/80887
diff --git a/gcc/testsuite/gfortran.dg/matmul_bounds_12.f90 b/gcc/testsuite/gfortran.dg/matmul_bounds_12.f90
new file mode 100644
index 0000000..01b3df9
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/matmul_bounds_12.f90
@@ -0,0 +1,17 @@
+! { dg-do run }
+program main
+ real, dimension(3,2) :: a
+ real, dimension(3) :: bp
+ real, dimension(3) :: res1
+ real, dimension(:), allocatable :: c3
+ real, dimension(2) :: res2
+
+ data a /-2., 3., -5., 7., -11., 13./
+ data bp /-23., -31., -41./
+ data res2 /158., -353./
+
+ c3 = matmul(bp,a)
+ if (size(c3,1) /= 2) call abort
+ if (any(c3 /= res2)) call abort
+
+end program main