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



--- Comment #10 from janus at gcc dot gnu.org 2012-12-15 13:06:37 UTC ---

Here is a reduced version of internal_pack_10.f90, which is the only

runtime-failure in the testsuite for the patch in comment #9:



module mo_obs_rules

  type t_set

     integer :: use = 0

  end type

  type t_rules

     character(len=10) :: comment

     type(t_set)       :: c (1)

  end type

contains

  subroutine set_set_v (src)

    type(t_set), intent(in)    :: src(1)

    if (any (src%use .ne. 99)) call abort

  end subroutine

end module



program test

  use mo_obs_rules

  type (t_rules) :: ru (1)

  ru(1)%c(:)%use = 99

  call set_set_v (ru(1)%c)

end program





The problem is that, without the patch, an array descriptor is generated for

the argument to 'set_set_v':



    parm.3.data = (void *) &ru[0].c[0];

    parm.3.offset = -1;

    set_set_v ((struct t_set[0:] *) parm.3.data);



which is not the case with the patch:



  set_set_v (&ru);

Reply via email to