https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82450
--- Comment #7 from Thomas Koenig <tkoenig at gcc dot gnu.org> --- If you're looking at this, could you also look at Fortran's way of handling things, for example the test cases subroutine foo(a) implicit none real, dimension(:,:), contiguous, intent(out) :: a a = a + 1. end subroutine foo subroutine bar(a, m, n) implicit none integer, intent(in) :: m,n real, dimension(m,n), intent(out) :: a integer :: i,j do j=1,n do i=1,m a(i,j) = a(i,j) + 1. end do end do end subroutine bar ? That would be great.