https://gcc.gnu.org/bugzilla/show_bug.cgi?id=127233

--- Comment #5 from Mikael Morin <mikael at gcc dot gnu.org> ---
(In reply to Mikael Morin from comment #4)
> FAIL: gfortran.dg/PR100120.f90

For this one, stripped down:

  integer, parameter :: n = 11

  type :: foo_t
    integer :: i
  end type foo_t

  type, extends(foo_t) :: bar_t
    integer :: j(n)
  end type bar_t

  type(bar_t),     target :: abd(n)
  class(foo_t),    pointer :: apf(:)

  apf => abd
  if(.not.associated(apf, abd))    stop 13


we generate:

  (...)
  apf._data.span = 48;
  apf._data.dtype = {.elem_len=4, .version=0, .rank=1, .type=5};
  (...)
  parm.0.span = 48;
  parm.0.dtype = {.elem_len=48, .version=0, .rank=1, .type=5};
  (...)
  if (_gfortran_associated (&apf._data, &parm.0) == 0 ...)
    (...)

so the element length in the pointer assignment is wrong.

Reply via email to