------- Comment #2 from janus at gcc dot gnu dot org 2009-06-30 14:28 ------- Here is a reduced and modified test case. I have marked four lines with a (*), whose removal results in the correct output (F F), although they seem completely unrelated. This is pretty strange stuff.
MODULE atom_types TYPE :: atom_list TYPE(atom_private), DIMENSION(:), pointer :: table ! (*) F F END TYPE TYPE :: atom_private TYPE(atom_list) :: neighbours ! (*) F F LOGICAL :: initialized = .true. END TYPE TYPE :: atom_model TYPE(atom_list) :: atoms ! (*) F F integer :: dummy END TYPE contains SUBROUTINE init(this) TYPE(atom_private) :: this this%initialized = .FALSE. print *, "init", this%initialized END SUBROUTINE END MODULE program pr40594 USE atom_types TYPE(atom_model) :: am type(atom_private) :: ap am%dummy = 0 ! (*) F F call init(ap) print *,"main",ap%initialized END -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40594