! { dg-do run }
!
! PR fortran/60392
! In the transposed case call to my_mul_cont, the compiler used to (wrongly)
! reuse a transposed descriptor for an array that was not transposed as a result
! of packing.
!
! Original test case from Alexander Vogt <a.vogt@fulguritus.com>.

program test
  implicit none

  integer, dimension(2,2) :: A, R, RT
  integer, dimension(2,2) :: B1, B2

  ! 
  ! A = [  2   17 ]
  !     [ 82  257 ]
  !
  ! matmul(a,a) = [  1398   4403 ]
  !               [ 21238  67443 ]
  !
  ! matmul(transpose(a), a) = [  6728  21108 ]
  !                           [ 21108  66338 ]
  A(1,1) =   2
  A(1,2) =  17
  A(2,1) =  82
  A(2,2) = 257

  R(1,1) =  1398
  R(1,2) =  4403
  R(2,1) = 21238
  R(2,2) = 67443
  
  RT(1,1) =  6728
  RT(1,2) = 21108
  RT(2,1) = 21108
  RT(2,2) = 66338

  ! Normal argument
  B1 = 0
  B2 = 0
  B1 = my_mul(A,A)
  B2 = my_mul_cont(A,A)
! print *,'Normal:    ',maxval(abs(B1-B2))
! print *,B1
! print *,B2
  if (any(B1 /= R)) STOP 1
  if (any(B2 /= R)) STOP 2

  ! Transposed argument
  B1 = 0
  B2 = 0
  B1 = my_mul(transpose(A),A)
  B2 = my_mul_cont(transpose(A),A)
! print *,'Transposed:',maxval(abs(B1-B2))
! print *,B1
! print *,B2
  if (any(B1 /= RT)) STOP 3
  if (any(B2 /= RT)) STOP 4

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
