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

--- Comment #10 from janus at gcc dot gnu.org ---
(In reply to Andre Vehreschild from comment #9)
> I just need to
> figure, if allocating the component explicitly is valid in Fortran.

For sure. I think both the examples in comment 4 and 5 are actually valid
Fortran code.

In order to make sure we're talking about the same thing, let's have a look at
the following code:

Type A
  integer :: X = 1
  integer, allocatable :: y
end type
Type(A) :: Me
allocate(Me%y)
print *,"A"
Me = A(X=1, y=2)
print *,"B"
print *, Me%y
end

This is a variant of the example above that produced the segfault. I inserted
some print statements in order to debug it. It prints at runtime:

 A
 B

Program received signal SIGSEGV: Segmentation fault - invalid memory reference.


This shows clearly that the segfault occurs when we try to access Me%y in the
last print statement, meaning that it is probably unallocated although it
clearly should be.

-fdump-tree-original shows that the problem is in the translation of the
structure constructor assignment, which apparently leaves the y-component
unallocated.

Reply via email to