http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60718
--- Comment #8 from Tobias Burnus <burnus at gcc dot gnu.org> --- (In reply to Bernd Edlinger from comment #6) > maybe the test case is wrong, passing one flavor of object to > another? > - class(node_type), target :: new_node > + class(node_type), pointer, intent(in) :: new_node The code as is currently is perfectly valid. gfortran generates for fixed-size arrays, those for nonallocatable/nonpointer tyoes and for allocatable (both with TYPE_QUAL_RESTRICT for the address) and pointer arrays different types - see gfc_build_array_type and for fixed-size arrays gfc_get_nodesc_array_type. And for polymorphic types, it wraps it in another struct type, one with the pointer to the virtual table and one containing the array. I think one solution would be to create a temporary variable of the target type (here: nonallocatable) - and assign to that temporary variable.