+2015-05-17 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/37131
+ * gfortran.dg/matmul_bounds_6.f90: New test.
+ * gfortran.dg/matmul_bounds_7.f90: New test.
+
2015-05-16 Jan Hubica <hubicka@ucw.cz>
* gfortran.dg/lto/20091028-2_1.c: Fix return value.
--- /dev/null
+! { dg-do run }
+program main
+ real, dimension(3,2) :: a
+ real, dimension(6) :: b
+ real, dimension(3) :: res1
+ real, dimension(:), allocatable :: c1, c2,c3
+ real, dimension(2) :: res2
+
+ data a /-2., 3., -5., 7., -11., 13./
+ data b /17., -23., 29., -31., 37., -41./
+ data res1 /201., -320., 336./
+ data res2 /158., -353./
+
+ c1 = matmul(a,[29.,37.])
+ if (size(c1,1) /= 3) call abort
+ if (any(c1/=res1)) call abort
+
+ c2 = matmul(a,pack(b,[b>20.]))
+ if (size(c1,1) /= 3) call abort
+ if (any(c1/=res1)) call abort
+
+ c3 = matmul(pack(b,[b<0.]),a)
+ if (size(c3,1) /= 2) call abort
+ if (any(c3 /= res2)) call abort
+
+end program main
--- /dev/null
+! { dg-do run }
+! { dg-additional-options "-fcheck=bounds" }
+! { dg-shouldfail "Fortran runtime error: dimension of array B incorrect in MATMUL intrinsic" }
+
+program main
+ real, dimension(3,2) :: a
+ real, dimension(6) :: b
+ real, dimension(:), allocatable :: c
+
+ data a /-2., 3., -5., 7., -11., 13./
+ data b /17., -23., 29., -31., 37., -41./
+
+ c = matmul(pack(b,[b<20.]),a)
+ print *,sum(c)
+
+end program main