[Bug fortran/56691] [OOP] Allocatable array: wrong offset when passing to CLASS dummy

janus at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Sat Mar 23 13:10:00 GMT 2013


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.



More information about the Gcc-bugs mailing list