http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60392

janus at gcc dot gnu.org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |wrong-code
                 CC|                            |janus at gcc dot gnu.org

--- Comment #2 from janus at gcc dot gnu.org ---
Confirmed with 4.6 to trunk.

Somewhat modified test case (using integers, 2x2 matrices, functions; without
random numbers):


program test
  implicit none

  integer, dimension(2,2), parameter :: A = reshape ((/1,2,3,4/), (/2,2/))
  integer, dimension(2,2) :: B1, B2

  ! Normal argument
  B1 = my_mul(A,A)
  B2 = my_mul_cont(A,A)
  print *,'Normal:    ',maxval(abs(B1-B2))
  print *,B1
  print *,B2

  ! Transposed argument
  B1 = my_mul(transpose(A),A)
  B2 = my_mul_cont(transpose(A),A)
  print *,'Transposed:',maxval(abs(B1-B2))
  print *,B1
  print *,B2

contains

  function my_mul(A,C) result (B)
    use, intrinsic :: ISO_Fortran_env
    integer, intent(in) :: A(2,2), C(2,2)
    integer :: B(2,2)
    B = matmul(A, C)
  end function

  function my_mul_cont(A,C) result (B)
    use, intrinsic :: ISO_Fortran_env
    integer, intent(in), contiguous :: A(:,:), C(:,:)
    integer :: B(2,2)
    B = matmul(A, C)
  end function

end program

Reply via email to