https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71047
Bug ID: 71047 Summary: Allocatable component of INTENT(OUT) dummy not set correctly Product: gcc Version: 7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran Assignee: unassigned at gcc dot gnu.org Reporter: mrestelli at gmail dot com Target Milestone: --- When compiled with gfortran, the attached code, which is correct as far as I can tell, produces an error at runtime: $ ./test At line 20 of file test.f90 Fortran runtime error: Attempting to allocate already allocated variable 'y' $ gfortran --version GNU Fortran (GCC) 7.0.0 20160510 (experimental) Notice that the dummy argument "y" of "set" has intent(out), so that its component "f" can not be allocated regardless of the state of the actual argument. I think that the code was working with an older version of the gfortran trunk (some weeks ago?) - or, at least, the code I derived this example from was working correctly. module m implicit none type, abstract :: c_abstr integer :: i = 0 end type c_abstr type, extends(c_abstr) :: t_a class(c_abstr), allocatable :: f end type t_a type, extends(c_abstr) :: t_b end type t_b contains subroutine set(y,x) class(c_abstr), intent(in) :: x type(t_a), intent(out) :: y allocate( y%f , source=x ) end subroutine set end module m program p use m implicit none type(t_a) :: res type(t_b) :: var call set( res , var ) write(*,*) res%i end program p