From: Thomas Koenig Date: Sun, 17 May 2015 13:45:07 +0000 (+0000) Subject: re PR fortran/37131 (inline matmul for small matrix sizes) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=2ea560b2b0da4ee9035ad0b56e971501a9612c0c;p=gcc.git re PR fortran/37131 (inline matmul for small matrix sizes) 2015-05-17 Thomas Koenig PR fortran/37131 * gfortran.dg/matmul_bounds_6.f90: New test. * gfortran.dg/matmul_bounds_7.f90: New test. From-SVN: r223268 --- diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 5133549afed..5a36566b0e4 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2015-05-17 Thomas Koenig + + PR fortran/37131 + * gfortran.dg/matmul_bounds_6.f90: New test. + * gfortran.dg/matmul_bounds_7.f90: New test. + 2015-05-16 Jan Hubica * gfortran.dg/lto/20091028-2_1.c: Fix return value. diff --git a/gcc/testsuite/gfortran.dg/matmul_bounds_6.f90 b/gcc/testsuite/gfortran.dg/matmul_bounds_6.f90 new file mode 100644 index 00000000000..7d96c2d7b8b --- /dev/null +++ b/gcc/testsuite/gfortran.dg/matmul_bounds_6.f90 @@ -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 diff --git a/gcc/testsuite/gfortran.dg/matmul_bounds_7.f90 b/gcc/testsuite/gfortran.dg/matmul_bounds_7.f90 new file mode 100644 index 00000000000..616869acf81 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/matmul_bounds_7.f90 @@ -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