http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59765

--- Comment #4 from janus at gcc dot gnu.org ---
I think what happens is something like the following:

generate_finalization_wrapper currently produces code like this on the test
case:

type(mtd), pointer :: ptr
deallocate(ptr%u(:)%c)

This is certainly wrong. Feeding it back to gfortran yields:

  deallocate(ptr%u%c)
             1
Error: Component to the right of a part reference with nonzero rank must not
have the ALLOCATABLE attribute at (1)


For the test case here it is sufficient to just use

deallocate(ptr%u(1)%c)

but for longer arrays we need to generate a loop:

do i=...
  deallocate(ptr%u(i)%c)
end do

Reply via email to