http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56691
janus at gcc dot gnu.org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |janus at gcc dot gnu.org Version|fortran-dev |4.9.0 Summary|Allocatable array of |[OOP] Allocatable array: |extended type, wrong |wrong offset when passing |indexes after passing to a |to CLASS dummy |subroutine | --- Comment #3 from janus at gcc dot gnu.org 2013-03-23 13:10:41 UTC --- Reduced test case which shows that the problem is CLASS-specific: module m2 implicit none type :: t_stv real :: f1 end type contains subroutine lcb(y) class(t_stv), intent(in) :: y(:) write(*,*) 'Inside LCB: size is ',size(y) print *,y(1:size(y))%f1 end subroutine end module program test use m2 implicit none type(t_stv), allocatable :: work(:) allocate(work(4)) work(:)%f1 = (/ 1.,2.,3.,4./) write(*,*) 'Values in work are:' print *, work(1:4)%f1 write(*,*) 'Call with whole array: works fine' call lcb(work) write(*,*) 'Call with array slice: off by 1' call lcb(work(:4)) end program When making 'y' a TYPE instead of CLASS, the output is as expected.