https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84060
Bug ID: 84060 Summary: Wrong assignment from a class(*) variable which is a function result. Product: gcc Version: 7.2.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran Assignee: unassigned at gcc dot gnu.org Reporter: vladimir.fuka at gmail dot com Target Milestone: --- The following gives random garbage results: select type (tmp => getValue()) type is (integer) print *, "tmp",tmp int_var = tmp end select print *, int_var contains function getValue() result(res) class(*), allocatable :: res res = 5 end function end > gfortran-7 unlimfunction.f90 > ./a.out tmp 5 32682 That was an expression, but a variable does the same: class(*), allocatable :: a a = getValue() select type (a) type is (integer) print *, "tmp",a int_var = a end select print *, int_var contains function getValue() result(res) class(*), allocatable :: res res = 5 end function end > gfortran-7 unlimfunction.f90 - > ./a.out tmp 5 0 Changing assignments to sourced allocations changes nothing.