! { dg-do compile } ! { dg-options "-O3 -fno-inline -fwhole-program -fdump-ipa-cp-details -fdump-tree-lversion-details" } module x implicit none contains subroutine foo(a, b) real :: a(:,:) real :: b integer :: i,j b = 0. do j=1,size(a,2) do i=1,size(a,1) b = b + a(i,j) * i * j end do end do end subroutine foo subroutine bar(a, b) real :: a(:,:) real :: b call foo (a,b) end subroutine bar end module x program main use x implicit none integer :: n, m real, dimension(4,3) :: a real, dimension(3,4) :: c real :: b call random_number(a) call bar(a,b) print *,b call random_number(c) call bar(c,b) print *,b end program main ! { dg-final { scan-ipa-dump "op assert_expr 1" "cp" } } ! { dg-final { scan-tree-dump-not "versioned this loop for when certain strides are 1" "lversion" } }