https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67564
--- Comment #9 from neil.n.carlson at gmail dot com --- I confirm that my original example now runs without error with the current 6-branch. However this variation, where the allocated unlimited polymorphic variable is passed back as a return argument, is not working correctly. class(*), allocatable :: val(:) call get_value (val) select type (val) type is (character(*)) print *, 'size(val)=', size(val) print *, 'len(val)=', len(val) print *, 'val=', val end select contains subroutine get_value (value) class(*), allocatable, intent(out) :: value(:) allocate(value, source=['foo','bar']) end subroutine end Here is the output from running the compiled program: size(val)= 2 len(val)= 0 val= The length of the character variable should be 3. I don't think the problem is as simple as the length not being assigned properly. In my actual use case (much more complicated) attempting to print "val" results in a segmentation fault.