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

--- Comment #4 from Andre Vehreschild <vehre at gcc dot gnu.org> ---
(In reply to anlauf from comment #3)
> Indeed.  valgrind reports an invalid read with -fcoarray=none.
> But I do not see this on 14-branch.

You are right. One does not see the invalid read on gcc-14.

But add two prints into the example:

program grow_type_array
    type :: string_t
        character(:), allocatable :: s
    end type string_t

    type(string_t) :: str
    type(string_t), allocatable :: list(:)

    ! This works
    allocate(list(0))
    str = new_string("Hello!")
    list = [list, str]

    print *, str%s
    deallocate(list)

    ! This segfaults on gfortran 15.1 but works on gfortran 14
    ! when using -fcoarray=single compile flag
    allocate(list(0))
    list = [list, new_string("Hello!")]

    print *, list(0)%s

contains

    type(string_t) function new_string(s) result(out)
        character(*), intent(in) :: s
        out%s = s
    end function new_string

end program grow_type_array

and you get them. I consider those prints valid. So there is something strange
going on. I will investigate.

Reply via email to