https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83118
Bug ID: 83118 Summary: Bad intrinsic assignment of class(*) array component of derived type (8.0 regression) Product: gcc Version: 8.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran Assignee: unassigned at gcc dot gnu.org Reporter: neil.n.carlson at gmail dot com Target Milestone: --- Intrinsic assignment of a derived type with allocatable CLASS(*) array component is not being done correctly with version 8.0 when the dynamic type is CHARACTER. Version 6.4.1 gives the expected result: orig=["foo","bar"] copy=["foo","bar"] But 8.0 (20171122) gives an incorrect result: orig=["foo","bar"] copy=["foo","b"] Here's the code: type :: any_vector class(*), allocatable :: v(:) end type type(any_vector) :: x, y allocate(x%v,source=['foo','bar']) select type (v => x%v) type is (character(*)) print '("orig=[""",a,''","'',a,''"]'')', v ! expect orig=["foo","bar"] end select y = x ! THIS ASSIGNMENT IS NOT BEING DONE CORRECTLY select type (v => y%v) type is (character(*)) print '("copy=[""",a,''","'',a,''"]'')', v ! expect copy=["foo","bar"] end select end