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