[Bug fortran/59781] [4.9 Regression] [F03] Incorrect initialisation of derived type

2014-01-12 Thread janus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59781

janus at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords||wrong-code
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2014-01-12
 CC||janus at gcc dot gnu.org
Summary|Incorrect initialisation of |[4.9 Regression] [F03]
   |derived type|Incorrect initialisation of
   ||derived type
 Ever confirmed|0   |1

--- Comment #1 from janus at gcc dot gnu.org ---
(In reply to james.s.spencer from comment #0)
 See also discussion at
 https://groups.google.com/forum/#!topic/comp.lang.fortran/WogpvhUny4c, where
 Janus posted a smaller example which breaks under gfortran trunk.

namely this one (which apparently is a regression in 4.9 trunk):

module hilbert_space
  use, intrinsic :: iso_c_binding
  implicit none

  type dSFMT_t
type(c_ptr) :: dSFMT_state = c_null_ptr
real(c_double), allocatable :: random_store(:)
  end type

contains

  subroutine dSFMT_init (arg)
type(dSFMT_t) :: arg
  end subroutine

  subroutine test_rng()
type(dSFMT_t) :: rng
call dSFMT_init (rng)
  end subroutine

end module


[Bug fortran/59781] [4.9 Regression] [F03] Incorrect initialisation of derived type

2014-01-12 Thread janus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59781

--- Comment #2 from janus at gcc dot gnu.org ---
Here is a reduced test case of comment 0, which shows the wrong dump with all
gfortran versions I tried (4.4, 4.6, 4.7, 4.8 and trunk):


module dSFMT_interface

  use, intrinsic :: iso_c_binding
  implicit none

  type dSFMT_t
type(c_ptr) :: state = c_null_ptr
real(c_double), allocatable :: store(:)
  end type

end module


  use dSFMT_interface
  implicit none

contains

  subroutine dSFMT_init(rng)
type(dSFMT_t) :: rng
  end subroutine

  subroutine test_rng()
type(dSFMT_t) :: rng
call dSFMT_init(rng)
  end subroutine

end



It is very similar to comment 1, just that the derived type is defined in a
separate module.