re PR fortran/37131 (inline matmul for small matrix sizes)

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.

From-SVN: r223268
This commit is contained in:
Thomas Koenig 2015-05-17 13:45:07 +00:00
parent ebd5b3fd54
commit 2ea560b2b0
3 changed files with 48 additions and 0 deletions

View File

@ -1,3 +1,9 @@
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.

View File

@ -0,0 +1,26 @@
! { 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

View File

@ -0,0 +1,16 @@
! { 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